#include "common.hpp"

#include <map>
#include <EGL/egl.h>
#include <EGL/eglext.h>
#include <GLES2/gl2.h>
#include <GLES2/gl2ext.h>
#include <GLES/gl.h>
#include <GLES/glext.h> // this has to come after glext2 due to khr_debug collision
#include <GLES3/gl3.h>
#include <GLES3/gl31.h>
#include <GLES3/gl32.h>

// KHR_debug says "GL only", but functionality also exists in GLES 3.1, whereas KHR_debug does not. hence it is missing from both headers.
#ifndef GL_PROGRAM_PIPELINE
#define GL_PROGRAM_PIPELINE 0x82E4
#endif

namespace
{

std::map<int, const char*> sEnumMap;
std::map<int, const char*> sDrawEnumMap;
std::map<int, const char*> sEglEnumMap;

bool sInitedEnumMap = false;

#define InsertEnumString(e) \
    sEnumMap.insert(std::pair<int, const char*>((e), (#e)))
#define InsertDrawEnumString(e) \
    sDrawEnumMap.insert(std::pair<int, const char*>((e), (#e)))
#define InsertEglEnumString(e) \
    sEglEnumMap.insert(std::pair<int, const char*>((e), (#e)))

// TODO: this really should be autogenerated from gl.xml
void InitEnumMap()
{
// generated from gl3.h by:
// grep "#define" gl3.h | awk '{print $3" "$2}' | sort | awk '{print "InsertEnumString("$2");"}'

// egl map inserts generated with:
// 1. cat egl.h | grep "#define" > defines.txt
// 2. cat defines.txt | awk '{ print "sEnumMap.insert(pair<int,string>("$3 ",\"" $2 "\"));" }'

    InsertEglEnumString(EGL_SUCCESS);
    InsertEglEnumString(EGL_NOT_INITIALIZED);
    InsertEglEnumString(EGL_BAD_ACCESS);
    InsertEglEnumString(EGL_BAD_ALLOC);
    InsertEglEnumString(EGL_BAD_ATTRIBUTE);
    InsertEglEnumString(EGL_BAD_CONFIG);
    InsertEglEnumString(EGL_BAD_CONTEXT);
    InsertEglEnumString(EGL_BAD_CURRENT_SURFACE);
    InsertEglEnumString(EGL_BAD_DISPLAY);
    InsertEglEnumString(EGL_BAD_MATCH);
    InsertEglEnumString(EGL_BAD_NATIVE_PIXMAP);
    InsertEglEnumString(EGL_BAD_NATIVE_WINDOW);
    InsertEglEnumString(EGL_BAD_PARAMETER);
    InsertEglEnumString(EGL_BAD_SURFACE);
    InsertEglEnumString(EGL_CONTEXT_LOST);
    InsertEglEnumString(EGL_BUFFER_SIZE);
    InsertEglEnumString(EGL_ALPHA_SIZE);
    InsertEglEnumString(EGL_BLUE_SIZE);
    InsertEglEnumString(EGL_GREEN_SIZE);
    InsertEglEnumString(EGL_RED_SIZE);
    InsertEglEnumString(EGL_DEPTH_SIZE);
    InsertEglEnumString(EGL_STENCIL_SIZE);
    InsertEglEnumString(EGL_CONFIG_CAVEAT);
    InsertEglEnumString(EGL_CONFIG_ID);
    InsertEglEnumString(EGL_LEVEL);
    InsertEglEnumString(EGL_MAX_PBUFFER_HEIGHT);
    InsertEglEnumString(EGL_MAX_PBUFFER_PIXELS);
    InsertEglEnumString(EGL_MAX_PBUFFER_WIDTH);
    InsertEglEnumString(EGL_NATIVE_RENDERABLE);
    InsertEglEnumString(EGL_NATIVE_VISUAL_ID);
    InsertEglEnumString(EGL_NATIVE_VISUAL_TYPE);
    InsertEglEnumString(EGL_SAMPLES);
    InsertEglEnumString(EGL_SAMPLE_BUFFERS);
    InsertEglEnumString(EGL_SURFACE_TYPE);
    InsertEglEnumString(EGL_TRANSPARENT_TYPE);
    InsertEglEnumString(EGL_TRANSPARENT_BLUE_VALUE);
    InsertEglEnumString(EGL_TRANSPARENT_GREEN_VALUE);
    InsertEglEnumString(EGL_TRANSPARENT_RED_VALUE);
    InsertEglEnumString(EGL_NONE);
    InsertEglEnumString(EGL_BIND_TO_TEXTURE_RGB);
    InsertEglEnumString(EGL_BIND_TO_TEXTURE_RGBA);
    InsertEglEnumString(EGL_MIN_SWAP_INTERVAL);
    InsertEglEnumString(EGL_MAX_SWAP_INTERVAL);
    InsertEglEnumString(EGL_LUMINANCE_SIZE);
    InsertEglEnumString(EGL_ALPHA_MASK_SIZE);
    InsertEglEnumString(EGL_COLOR_BUFFER_TYPE);
    InsertEglEnumString(EGL_COLOR_COMPONENT_TYPE_EXT);
    InsertEglEnumString(EGL_RENDERABLE_TYPE);
    InsertEglEnumString(EGL_MATCH_NATIVE_PIXMAP);
    InsertEglEnumString(EGL_CONFORMANT);
    InsertEglEnumString(EGL_SLOW_CONFIG);
    InsertEglEnumString(EGL_NON_CONFORMANT_CONFIG);
    InsertEglEnumString(EGL_TRANSPARENT_RGB);
    InsertEglEnumString(EGL_RGB_BUFFER);
    InsertEglEnumString(EGL_LUMINANCE_BUFFER);
    InsertEglEnumString(EGL_NO_TEXTURE);
    InsertEglEnumString(EGL_TEXTURE_RGB);
    InsertEglEnumString(EGL_TEXTURE_RGBA);
    InsertEglEnumString(EGL_TEXTURE_2D);
    InsertEglEnumString(EGL_VENDOR);
    InsertEglEnumString(EGL_VERSION);
    InsertEglEnumString(EGL_EXTENSIONS);
    InsertEglEnumString(EGL_CLIENT_APIS);
    InsertEglEnumString(EGL_HEIGHT);
    InsertEglEnumString(EGL_WIDTH);
    InsertEglEnumString(EGL_BUFFER_AGE_KHR);
    InsertEglEnumString(EGL_LARGEST_PBUFFER);
    InsertEglEnumString(EGL_TEXTURE_FORMAT);
    InsertEglEnumString(EGL_TEXTURE_TARGET);
    InsertEglEnumString(EGL_MIPMAP_TEXTURE);
    InsertEglEnumString(EGL_MIPMAP_LEVEL);
    InsertEglEnumString(EGL_RENDER_BUFFER);
    InsertEglEnumString(EGL_VG_COLORSPACE);
    InsertEglEnumString(EGL_VG_ALPHA_FORMAT);
    InsertEglEnumString(EGL_HORIZONTAL_RESOLUTION);
    InsertEglEnumString(EGL_VERTICAL_RESOLUTION);
    InsertEglEnumString(EGL_PIXEL_ASPECT_RATIO);
    InsertEglEnumString(EGL_SWAP_BEHAVIOR);
    InsertEglEnumString(EGL_MULTISAMPLE_RESOLVE);
    InsertEglEnumString(EGL_BACK_BUFFER);
    InsertEglEnumString(EGL_SINGLE_BUFFER);
    InsertEglEnumString(EGL_VG_COLORSPACE_sRGB);
    InsertEglEnumString(EGL_VG_COLORSPACE_LINEAR);
    InsertEglEnumString(EGL_VG_ALPHA_FORMAT_NONPRE);
    InsertEglEnumString(EGL_VG_ALPHA_FORMAT_PRE);
    InsertEglEnumString(EGL_DISPLAY_SCALING);
    InsertEglEnumString(EGL_BUFFER_PRESERVED);
    InsertEglEnumString(EGL_BUFFER_DESTROYED);
    InsertEglEnumString(EGL_OPENVG_IMAGE);
    InsertEglEnumString(EGL_CONTEXT_CLIENT_TYPE);
    InsertEglEnumString(EGL_CONTEXT_CLIENT_VERSION);
    InsertEglEnumString(EGL_MULTISAMPLE_RESOLVE_DEFAULT);
    InsertEglEnumString(EGL_MULTISAMPLE_RESOLVE_BOX);
    InsertEglEnumString(EGL_OPENGL_ES_API);
    InsertEglEnumString(EGL_OPENVG_API);
    InsertEglEnumString(EGL_OPENGL_API);
    InsertEglEnumString(EGL_DRAW);
    InsertEglEnumString(EGL_READ);
    InsertEglEnumString(EGL_CORE_NATIVE_ENGINE);

    /* EGL_NV_coverage_sample */
    InsertEglEnumString(EGL_COVERAGE_BUFFERS_NV);
    InsertEglEnumString(EGL_COVERAGE_SAMPLES_NV);
    /* EGL_NV_depth_nonlinear */
    InsertEglEnumString(EGL_DEPTH_ENCODING_NV);
    InsertEglEnumString(EGL_DEPTH_ENCODING_NONLINEAR_NV);

    /* GLES 1 enums */
    InsertEnumString(GL_ADD);       // 0x0104
    InsertEnumString(GL_NEVER);     // 0x0200
    InsertEnumString(GL_LESS);      // 0x0201
    InsertEnumString(GL_EQUAL);     // 0x0202
    InsertEnumString(GL_LEQUAL);        // 0x0203
    InsertEnumString(GL_GREATER);       // 0x0204
    InsertEnumString(GL_NOTEQUAL);      // 0x0205
    InsertEnumString(GL_GEQUAL);        // 0x0206
    InsertEnumString(GL_ALWAYS);        // 0x0207
    InsertEnumString(GL_SRC_COLOR);     // 0x0300
    InsertEnumString(GL_ONE_MINUS_SRC_COLOR);       // 0x0301
    InsertEnumString(GL_SRC_ALPHA);     // 0x0302
    InsertEnumString(GL_ONE_MINUS_SRC_ALPHA);       // 0x0303
    InsertEnumString(GL_DST_ALPHA);     // 0x0304
    InsertEnumString(GL_ONE_MINUS_DST_ALPHA);       // 0x0305
    InsertEnumString(GL_DST_COLOR);     // 0x0306
    InsertEnumString(GL_ONE_MINUS_DST_COLOR);       // 0x0307
    InsertEnumString(GL_SRC_ALPHA_SATURATE);        // 0x0308
    InsertEnumString(GL_FRONT);     // 0x0404
    InsertEnumString(GL_BACK);      // 0x0405
    InsertEnumString(GL_FRONT_AND_BACK);        // 0x0408
    InsertEnumString(GL_INVALID_ENUM);      // 0x0500
    InsertEnumString(GL_INVALID_VALUE);     // 0x0501
    InsertEnumString(GL_INVALID_OPERATION);     // 0x0502
    InsertEnumString(GL_STACK_OVERFLOW);        // 0x0503
    InsertEnumString(GL_STACK_UNDERFLOW);       // 0x0504
    InsertEnumString(GL_OUT_OF_MEMORY);     // 0x0505
    InsertEnumString(GL_EXP);       // 0x0800
    InsertEnumString(GL_EXP2);      // 0x0801
    InsertEnumString(GL_CW);        // 0x0900
    InsertEnumString(GL_CCW);       // 0x0901
    InsertEnumString(GL_CURRENT_COLOR);     // 0x0B00
    InsertEnumString(GL_CURRENT_NORMAL);        // 0x0B02
    InsertEnumString(GL_CURRENT_TEXTURE_COORDS);        // 0x0B03
    InsertEnumString(GL_POINT_SMOOTH);      // 0x0B10
    InsertEnumString(GL_POINT_SIZE);        // 0x0B11
    InsertEnumString(GL_SMOOTH_POINT_SIZE_RANGE);       // 0x0B12
    InsertEnumString(GL_LINE_SMOOTH);       // 0x0B20
    InsertEnumString(GL_LINE_WIDTH);        // 0x0B21
    InsertEnumString(GL_SMOOTH_LINE_WIDTH_RANGE);       // 0x0B22
    InsertEnumString(GL_CULL_FACE);     // 0x0B44
    InsertEnumString(GL_CULL_FACE_MODE);        // 0x0B45
    InsertEnumString(GL_FRONT_FACE);        // 0x0B46
    InsertEnumString(GL_LIGHTING);      // 0x0B50
    InsertEnumString(GL_LIGHT_MODEL_TWO_SIDE);      // 0x0B52
    InsertEnumString(GL_LIGHT_MODEL_AMBIENT);       // 0x0B53
    InsertEnumString(GL_SHADE_MODEL);       // 0x0B54
    InsertEnumString(GL_COLOR_MATERIAL);        // 0x0B57
    InsertEnumString(GL_FOG);       // 0x0B60
    InsertEnumString(GL_FOG_DENSITY);       // 0x0B62
    InsertEnumString(GL_FOG_START);     // 0x0B63
    InsertEnumString(GL_FOG_END);       // 0x0B64
    InsertEnumString(GL_FOG_MODE);      // 0x0B65
    InsertEnumString(GL_FOG_COLOR);     // 0x0B66
    InsertEnumString(GL_DEPTH_RANGE);       // 0x0B70
    InsertEnumString(GL_DEPTH_TEST);        // 0x0B71
    InsertEnumString(GL_DEPTH_WRITEMASK);       // 0x0B72
    InsertEnumString(GL_DEPTH_CLEAR_VALUE);     // 0x0B73
    InsertEnumString(GL_DEPTH_FUNC);        // 0x0B74
    InsertEnumString(GL_STENCIL_TEST);      // 0x0B90
    InsertEnumString(GL_STENCIL_CLEAR_VALUE);       // 0x0B91
    InsertEnumString(GL_STENCIL_FUNC);      // 0x0B92
    InsertEnumString(GL_STENCIL_VALUE_MASK);        // 0x0B93
    InsertEnumString(GL_STENCIL_FAIL);      // 0x0B94
    InsertEnumString(GL_STENCIL_PASS_DEPTH_FAIL);       // 0x0B95
    InsertEnumString(GL_STENCIL_PASS_DEPTH_PASS);       // 0x0B96
    InsertEnumString(GL_STENCIL_REF);       // 0x0B97
    InsertEnumString(GL_STENCIL_WRITEMASK);     // 0x0B98
    InsertEnumString(GL_MATRIX_MODE);       // 0x0BA0
    InsertEnumString(GL_NORMALIZE);     // 0x0BA1
    InsertEnumString(GL_VIEWPORT);      // 0x0BA2
    InsertEnumString(GL_MODELVIEW_STACK_DEPTH);     // 0x0BA3
    InsertEnumString(GL_PROJECTION_STACK_DEPTH);        // 0x0BA4
    InsertEnumString(GL_TEXTURE_STACK_DEPTH);       // 0x0BA5
    InsertEnumString(GL_MODELVIEW_MATRIX);      // 0x0BA6
    InsertEnumString(GL_PROJECTION_MATRIX);     // 0x0BA7
    InsertEnumString(GL_TEXTURE_MATRIX);        // 0x0BA8
    InsertEnumString(GL_ALPHA_TEST);        // 0x0BC0
    InsertEnumString(GL_ALPHA_TEST_FUNC);       // 0x0BC1
    InsertEnumString(GL_ALPHA_TEST_REF);        // 0x0BC2
    InsertEnumString(GL_DITHER);        // 0x0BD0
    InsertEnumString(GL_BLEND_DST);     // 0x0BE0
    InsertEnumString(GL_BLEND_SRC);     // 0x0BE1
    InsertEnumString(GL_BLEND);     // 0x0BE2
    InsertEnumString(GL_LOGIC_OP_MODE);     // 0x0BF0
    InsertEnumString(GL_COLOR_LOGIC_OP);        // 0x0BF2
    InsertEnumString(GL_SCISSOR_BOX);       // 0x0C10
    InsertEnumString(GL_SCISSOR_TEST);      // 0x0C11
    InsertEnumString(GL_COLOR_CLEAR_VALUE);     // 0x0C22
    InsertEnumString(GL_COLOR_WRITEMASK);       // 0x0C23
    InsertEnumString(GL_PERSPECTIVE_CORRECTION_HINT);       // 0x0C50
    InsertEnumString(GL_POINT_SMOOTH_HINT);     // 0x0C51
    InsertEnumString(GL_LINE_SMOOTH_HINT);      // 0x0C52
    InsertEnumString(GL_FOG_HINT);      // 0x0C54
    InsertEnumString(GL_UNPACK_ALIGNMENT);      // 0x0CF5
    InsertEnumString(GL_PACK_ALIGNMENT);        // 0x0D05
    InsertEnumString(GL_ALPHA_SCALE);       // 0x0D1C
    InsertEnumString(GL_MAX_LIGHTS);        // 0x0D31
    InsertEnumString(GL_MAX_CLIP_PLANES);       // 0x0D32
    InsertEnumString(GL_MAX_TEXTURE_SIZE);      // 0x0D33
    InsertEnumString(GL_MAX_MODELVIEW_STACK_DEPTH);     // 0x0D36
    InsertEnumString(GL_MAX_PROJECTION_STACK_DEPTH);        // 0x0D38
    InsertEnumString(GL_MAX_TEXTURE_STACK_DEPTH);       // 0x0D39
    InsertEnumString(GL_MAX_VIEWPORT_DIMS);     // 0x0D3A
    InsertEnumString(GL_SUBPIXEL_BITS);     // 0x0D50
    InsertEnumString(GL_RED_BITS);      // 0x0D52
    InsertEnumString(GL_GREEN_BITS);        // 0x0D53
    InsertEnumString(GL_BLUE_BITS);     // 0x0D54
    InsertEnumString(GL_ALPHA_BITS);        // 0x0D55
    InsertEnumString(GL_DEPTH_BITS);        // 0x0D56
    InsertEnumString(GL_STENCIL_BITS);      // 0x0D57
    InsertEnumString(GL_TEXTURE_2D);        // 0x0DE1
    InsertEnumString(GL_DONT_CARE);     // 0x1100
    InsertEnumString(GL_FASTEST);       // 0x1101
    InsertEnumString(GL_NICEST);        // 0x1102
    InsertEnumString(GL_AMBIENT);       // 0x1200
    InsertEnumString(GL_DIFFUSE);       // 0x1201
    InsertEnumString(GL_SPECULAR);      // 0x1202
    InsertEnumString(GL_POSITION);      // 0x1203
    InsertEnumString(GL_SPOT_DIRECTION);        // 0x1204
    InsertEnumString(GL_SPOT_EXPONENT);     // 0x1205
    InsertEnumString(GL_SPOT_CUTOFF);       // 0x1206
    InsertEnumString(GL_CONSTANT_ATTENUATION);      // 0x1207
    InsertEnumString(GL_LINEAR_ATTENUATION);        // 0x1208
    InsertEnumString(GL_QUADRATIC_ATTENUATION);     // 0x1209
    InsertEnumString(GL_BYTE);     // 0x1400
    InsertEnumString(GL_UNSIGNED_BYTE);     // 0x1401
    InsertEnumString(GL_SHORT);     // 0x1402
    InsertEnumString(GL_UNSIGNED_SHORT);     // 0x1403
    InsertEnumString(GL_INT);     // 0x1404
    InsertEnumString(GL_UNSIGNED_INT);     // 0x1405
    InsertEnumString(GL_FLOAT);     // 0x1406
    InsertEnumString(GL_FIXED);     // 0x140C
    InsertEnumString(GL_CLEAR);     // 0x1500
    InsertEnumString(GL_AND);       // 0x1501
    InsertEnumString(GL_AND_REVERSE);       // 0x1502
    InsertEnumString(GL_COPY);      // 0x1503
    InsertEnumString(GL_AND_INVERTED);      // 0x1504
    InsertEnumString(GL_NOOP);      // 0x1505
    InsertEnumString(GL_XOR);       // 0x1506
    InsertEnumString(GL_OR);        // 0x1507
    InsertEnumString(GL_NOR);       // 0x1508
    InsertEnumString(GL_EQUIV);     // 0x1509
    InsertEnumString(GL_INVERT);        // 0x150A
    InsertEnumString(GL_OR_REVERSE);        // 0x150B
    InsertEnumString(GL_COPY_INVERTED);     // 0x150C
    InsertEnumString(GL_OR_INVERTED);       // 0x150D
    InsertEnumString(GL_NAND);      // 0x150E
    InsertEnumString(GL_SET);       // 0x150F
    InsertEnumString(GL_EMISSION);      // 0x1600
    InsertEnumString(GL_SHININESS);     // 0x1601
    InsertEnumString(GL_AMBIENT_AND_DIFFUSE);       // 0x1602
    InsertEnumString(GL_MODELVIEW);     // 0x1700
    InsertEnumString(GL_PROJECTION);        // 0x1701
    InsertEnumString(GL_TEXTURE);       // 0x1702
    InsertEnumString(GL_ALPHA);     // 0x1906
    InsertEnumString(GL_RGB);       // 0x1907
    InsertEnumString(GL_RGBA);      // 0x1908
    InsertEnumString(GL_LUMINANCE);     // 0x1909
    InsertEnumString(GL_LUMINANCE_ALPHA);       // 0x190A
    InsertEnumString(GL_FLAT);      // 0x1D00
    InsertEnumString(GL_SMOOTH);        // 0x1D01
    InsertEnumString(GL_KEEP);      // 0x1E00
    InsertEnumString(GL_REPLACE);       // 0x1E01
    InsertEnumString(GL_INCR);      // 0x1E02
    InsertEnumString(GL_DECR);      // 0x1E03
    InsertEnumString(GL_VENDOR);        // 0x1F00
    InsertEnumString(GL_RENDERER);      // 0x1F01
    InsertEnumString(GL_VERSION);       // 0x1F02
    InsertEnumString(GL_EXTENSIONS);        // 0x1F03
    InsertEnumString(GL_MODULATE);      // 0x2100
    InsertEnumString(GL_DECAL);     // 0x2101
    InsertEnumString(GL_TEXTURE_ENV_MODE);      // 0x2200
    InsertEnumString(GL_TEXTURE_ENV_COLOR);     // 0x2201
    InsertEnumString(GL_TEXTURE_ENV);       // 0x2300
    InsertEnumString(GL_NEAREST);       // 0x2600
    InsertEnumString(GL_LINEAR);        // 0x2601
    InsertEnumString(GL_NEAREST_MIPMAP_NEAREST);        // 0x2700
    InsertEnumString(GL_LINEAR_MIPMAP_NEAREST);     // 0x2701
    InsertEnumString(GL_NEAREST_MIPMAP_LINEAR);     // 0x2702
    InsertEnumString(GL_LINEAR_MIPMAP_LINEAR);      // 0x2703
    InsertEnumString(GL_TEXTURE_MAG_FILTER);        // 0x2800
    InsertEnumString(GL_TEXTURE_MIN_FILTER);        // 0x2801
    InsertEnumString(GL_TEXTURE_WRAP_S);        // 0x2802
    InsertEnumString(GL_TEXTURE_WRAP_T);        // 0x2803
    InsertEnumString(GL_REPEAT);        // 0x2901
    InsertEnumString(GL_POLYGON_OFFSET_UNITS);      // 0x2A00
    InsertEnumString(GL_CLIP_PLANE0);       // 0x3000
    InsertEnumString(GL_CLIP_PLANE1);       // 0x3001
    InsertEnumString(GL_CLIP_PLANE2);       // 0x3002
    InsertEnumString(GL_CLIP_PLANE3);       // 0x3003
    InsertEnumString(GL_CLIP_PLANE4);       // 0x3004
    InsertEnumString(GL_CLIP_PLANE5);       // 0x3005
    InsertEnumString(GL_LIGHT0);        // 0x4000
    InsertEnumString(GL_LIGHT1);        // 0x4001
    InsertEnumString(GL_LIGHT2);        // 0x4002
    InsertEnumString(GL_LIGHT3);        // 0x4003
    InsertEnumString(GL_LIGHT4);        // 0x4004
    InsertEnumString(GL_LIGHT5);        // 0x4005
    InsertEnumString(GL_LIGHT6);        // 0x4006
    InsertEnumString(GL_LIGHT7);        // 0x4007
    InsertEnumString(GL_UNSIGNED_SHORT_4_4_4_4);        // 0x8033
    InsertEnumString(GL_UNSIGNED_SHORT_5_5_5_1);        // 0x8034
    InsertEnumString(GL_POLYGON_OFFSET_FILL);       // 0x8037
    InsertEnumString(GL_POLYGON_OFFSET_FACTOR);     // 0x8038
    InsertEnumString(GL_RESCALE_NORMAL);        // 0x803A
    InsertEnumString(GL_TEXTURE_BINDING_2D);        // 0x8069
    InsertEnumString(GL_VERTEX_ARRAY);      // 0x8074
    InsertEnumString(GL_NORMAL_ARRAY);      // 0x8075
    InsertEnumString(GL_COLOR_ARRAY);       // 0x8076
    InsertEnumString(GL_TEXTURE_COORD_ARRAY);       // 0x8078
    InsertEnumString(GL_VERTEX_ARRAY_SIZE);     // 0x807A
    InsertEnumString(GL_VERTEX_ARRAY_TYPE);     // 0x807B
    InsertEnumString(GL_VERTEX_ARRAY_STRIDE);       // 0x807C
    InsertEnumString(GL_NORMAL_ARRAY_TYPE);     // 0x807E
    InsertEnumString(GL_NORMAL_ARRAY_STRIDE);       // 0x807F
    InsertEnumString(GL_COLOR_ARRAY_SIZE);      // 0x8081
    InsertEnumString(GL_COLOR_ARRAY_TYPE);      // 0x8082
    InsertEnumString(GL_COLOR_ARRAY_STRIDE);        // 0x8083
    InsertEnumString(GL_TEXTURE_COORD_ARRAY_SIZE);      // 0x8088
    InsertEnumString(GL_TEXTURE_COORD_ARRAY_TYPE);      // 0x8089
    InsertEnumString(GL_TEXTURE_COORD_ARRAY_STRIDE);        // 0x808A
    InsertEnumString(GL_VERTEX_ARRAY_POINTER);      // 0x808E
    InsertEnumString(GL_NORMAL_ARRAY_POINTER);      // 0x808F
    InsertEnumString(GL_COLOR_ARRAY_POINTER);       // 0x8090
    InsertEnumString(GL_TEXTURE_COORD_ARRAY_POINTER);       // 0x8092
    InsertEnumString(GL_MULTISAMPLE);       // 0x809D
    InsertEnumString(GL_SAMPLE_ALPHA_TO_COVERAGE);      // 0x809E
    InsertEnumString(GL_SAMPLE_ALPHA_TO_ONE);       // 0x809F
    InsertEnumString(GL_SAMPLE_COVERAGE);       // 0x80A0
    InsertEnumString(GL_SAMPLE_BUFFERS);        // 0x80A8
    InsertEnumString(GL_SAMPLES);       // 0x80A9
    InsertEnumString(GL_SAMPLE_COVERAGE_VALUE);     // 0x80AA
    InsertEnumString(GL_SAMPLE_COVERAGE_INVERT);        // 0x80AB
    InsertEnumString(GL_POINT_SIZE_MIN);        // 0x8126
    InsertEnumString(GL_POINT_SIZE_MAX);        // 0x8127
    InsertEnumString(GL_POINT_FADE_THRESHOLD_SIZE);     // 0x8128
    InsertEnumString(GL_POINT_DISTANCE_ATTENUATION);        // 0x8129
    InsertEnumString(GL_CLAMP_TO_EDGE);     // 0x812F
    InsertEnumString(GL_GENERATE_MIPMAP);       // 0x8191
    InsertEnumString(GL_GENERATE_MIPMAP_HINT);      // 0x8192
    InsertEnumString(GL_UNSIGNED_SHORT_5_6_5);      // 0x8363
    InsertEnumString(GL_ALIASED_POINT_SIZE_RANGE);      // 0x846D
    InsertEnumString(GL_ALIASED_LINE_WIDTH_RANGE);      // 0x846E
    InsertEnumString(GL_TEXTURE0);      // 0x84C0
    InsertEnumString(GL_TEXTURE1);      // 0x84C1
    InsertEnumString(GL_TEXTURE2);      // 0x84C2
    InsertEnumString(GL_TEXTURE3);      // 0x84C3
    InsertEnumString(GL_TEXTURE4);      // 0x84C4
    InsertEnumString(GL_TEXTURE5);      // 0x84C5
    InsertEnumString(GL_TEXTURE6);      // 0x84C6
    InsertEnumString(GL_TEXTURE7);      // 0x84C7
    InsertEnumString(GL_TEXTURE8);      // 0x84C8
    InsertEnumString(GL_TEXTURE9);      // 0x84C9
    InsertEnumString(GL_TEXTURE10);     // 0x84CA
    InsertEnumString(GL_TEXTURE11);     // 0x84CB
    InsertEnumString(GL_TEXTURE12);     // 0x84CC
    InsertEnumString(GL_TEXTURE13);     // 0x84CD
    InsertEnumString(GL_TEXTURE14);     // 0x84CE
    InsertEnumString(GL_TEXTURE15);     // 0x84CF
    InsertEnumString(GL_TEXTURE16);     // 0x84D0
    InsertEnumString(GL_TEXTURE17);     // 0x84D1
    InsertEnumString(GL_TEXTURE18);     // 0x84D2
    InsertEnumString(GL_TEXTURE19);     // 0x84D3
    InsertEnumString(GL_TEXTURE20);     // 0x84D4
    InsertEnumString(GL_TEXTURE21);     // 0x84D5
    InsertEnumString(GL_TEXTURE22);     // 0x84D6
    InsertEnumString(GL_TEXTURE23);     // 0x84D7
    InsertEnumString(GL_TEXTURE24);     // 0x84D8
    InsertEnumString(GL_TEXTURE25);     // 0x84D9
    InsertEnumString(GL_TEXTURE26);     // 0x84DA
    InsertEnumString(GL_TEXTURE27);     // 0x84DB
    InsertEnumString(GL_TEXTURE28);     // 0x84DC
    InsertEnumString(GL_TEXTURE29);     // 0x84DD
    InsertEnumString(GL_TEXTURE30);     // 0x84DE
    InsertEnumString(GL_TEXTURE31);     // 0x84DF
    InsertEnumString(GL_ACTIVE_TEXTURE);        // 0x84E0
    InsertEnumString(GL_CLIENT_ACTIVE_TEXTURE);     // 0x84E1
    InsertEnumString(GL_MAX_TEXTURE_UNITS);     // 0x84E2
    InsertEnumString(GL_SUBTRACT);      // 0x84E7
    InsertEnumString(GL_COMBINE);       // 0x8570
    InsertEnumString(GL_COMBINE_RGB);       // 0x8571
    InsertEnumString(GL_COMBINE_ALPHA);     // 0x8572
    InsertEnumString(GL_RGB_SCALE);     // 0x8573
    InsertEnumString(GL_ADD_SIGNED);        // 0x8574
    InsertEnumString(GL_INTERPOLATE);       // 0x8575
    InsertEnumString(GL_CONSTANT);      // 0x8576
    InsertEnumString(GL_PRIMARY_COLOR);     // 0x8577
    InsertEnumString(GL_PREVIOUS);      // 0x8578
    InsertEnumString(GL_SRC0_RGB);      // 0x8580
    InsertEnumString(GL_SRC1_RGB);      // 0x8581
    InsertEnumString(GL_SRC2_RGB);      // 0x8582
    InsertEnumString(GL_SRC0_ALPHA);        // 0x8588
    InsertEnumString(GL_SRC1_ALPHA);        // 0x8589
    InsertEnumString(GL_SRC2_ALPHA);        // 0x858A
    InsertEnumString(GL_OPERAND0_RGB);      // 0x8590
    InsertEnumString(GL_OPERAND1_RGB);      // 0x8591
    InsertEnumString(GL_OPERAND2_RGB);      // 0x8592
    InsertEnumString(GL_OPERAND0_ALPHA);        // 0x8598
    InsertEnumString(GL_OPERAND1_ALPHA);        // 0x8599
    InsertEnumString(GL_OPERAND2_ALPHA);        // 0x859A
    InsertEnumString(GL_NUM_COMPRESSED_TEXTURE_FORMATS);        // 0x86A2
    InsertEnumString(GL_COMPRESSED_TEXTURE_FORMATS);        // 0x86A3
    InsertEnumString(GL_DOT3_RGB);      // 0x86AE
    InsertEnumString(GL_DOT3_RGBA);     // 0x86AF
    InsertEnumString(GL_BUFFER_SIZE);       // 0x8764
    InsertEnumString(GL_BUFFER_USAGE);      // 0x8765
    InsertEnumString(GL_POINT_SPRITE_OES);      // 0x8861
    InsertEnumString(GL_COORD_REPLACE_OES);     // 0x8862
    InsertEnumString(GL_ARRAY_BUFFER);      // 0x8892
    InsertEnumString(GL_ELEMENT_ARRAY_BUFFER);      // 0x8893
    InsertEnumString(GL_ARRAY_BUFFER_BINDING);      // 0x8894
    InsertEnumString(GL_ELEMENT_ARRAY_BUFFER_BINDING);      // 0x8895
    InsertEnumString(GL_VERTEX_ARRAY_BUFFER_BINDING);       // 0x8896
    InsertEnumString(GL_NORMAL_ARRAY_BUFFER_BINDING);       // 0x8897
    InsertEnumString(GL_COLOR_ARRAY_BUFFER_BINDING);        // 0x8898
    InsertEnumString(GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING);        // 0x889A
    InsertEnumString(GL_STATIC_DRAW);       // 0x88E4
    InsertEnumString(GL_DYNAMIC_DRAW);      // 0x88E8
    InsertEnumString(GL_POINT_SIZE_ARRAY_TYPE_OES);     // 0x898A
    InsertEnumString(GL_POINT_SIZE_ARRAY_STRIDE_OES);       // 0x898B
    InsertEnumString(GL_POINT_SIZE_ARRAY_POINTER_OES);      // 0x898C
    InsertEnumString(GL_PALETTE4_RGB8_OES);     // 0x8B90
    InsertEnumString(GL_PALETTE4_RGBA8_OES);        // 0x8B91
    InsertEnumString(GL_PALETTE4_R5_G6_B5_OES);     // 0x8B92
    InsertEnumString(GL_PALETTE4_RGBA4_OES);        // 0x8B93
    InsertEnumString(GL_PALETTE4_RGB5_A1_OES);      // 0x8B94
    InsertEnumString(GL_PALETTE8_RGB8_OES);     // 0x8B95
    InsertEnumString(GL_PALETTE8_RGBA8_OES);        // 0x8B96
    InsertEnumString(GL_PALETTE8_R5_G6_B5_OES);     // 0x8B97
    InsertEnumString(GL_PALETTE8_RGBA4_OES);        // 0x8B98
    InsertEnumString(GL_PALETTE8_RGB5_A1_OES);      // 0x8B99
    InsertEnumString(GL_POINT_SIZE_ARRAY_OES);      // 0x8B9C
    InsertEnumString(GL_POINT_SIZE_ARRAY_BUFFER_BINDING_OES);       // 0x8B9F

    /* GLES EXT enums */
    InsertEnumString(GL_TEXTURE_GEN_MODE_OES);      // 0x2500
    InsertEnumString(GL_RGB10_EXT);     // 0x8052
    InsertEnumString(GL_BGRA_EXT);      // 0x80E1
    InsertEnumString(GL_DEPTH_COMPONENT32_OES);     // 0x81A7
    InsertEnumString(GL_UNSIGNED_SHORT_4_4_4_4_REV_EXT);        // 0x8365
    InsertEnumString(GL_UNSIGNED_SHORT_1_5_5_5_REV_EXT);        // 0x8366
    InsertEnumString(GL_COMPRESSED_RGB_S3TC_DXT1_EXT);      // 0x83F0
    InsertEnumString(GL_COMPRESSED_RGBA_S3TC_DXT1_EXT);     // 0x83F1
    InsertEnumString(GL_ALL_COMPLETED_NV);      // 0x84F2
    InsertEnumString(GL_FENCE_STATUS_NV);       // 0x84F3
    InsertEnumString(GL_FENCE_CONDITION_NV);        // 0x84F4
    InsertEnumString(GL_TEXTURE_MAX_ANISOTROPY_EXT);        // 0x84FE
    InsertEnumString(GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT);        // 0x84FF
    InsertEnumString(GL_TEXTURE_FILTER_CONTROL_EXT);        // 0x8500
    InsertEnumString(GL_TEXTURE_LOD_BIAS_EXT);      // 0x8501
    InsertEnumString(GL_NORMAL_MAP_OES);        // 0x8511
    InsertEnumString(GL_REFLECTION_MAP_OES);        // 0x8512
    InsertEnumString(GL_MAX_VERTEX_UNITS_OES);      // 0x86A4
    InsertEnumString(GL_WEIGHT_ARRAY_TYPE_OES);     // 0x86A9
    InsertEnumString(GL_WEIGHT_ARRAY_STRIDE_OES);       // 0x86AA
    InsertEnumString(GL_WEIGHT_ARRAY_SIZE_OES);     // 0x86AB
    InsertEnumString(GL_WEIGHT_ARRAY_POINTER_OES);      // 0x86AC
    InsertEnumString(GL_WEIGHT_ARRAY_OES);      // 0x86AD
    InsertEnumString(GL_ATC_RGBA_INTERPOLATED_ALPHA_AMD);       // 0x87EE
    InsertEnumString(GL_3DC_X_AMD);     // 0x87F9
    InsertEnumString(GL_3DC_XY_AMD);        // 0x87FA
    InsertEnumString(GL_ALPHA32F_EXT);      // 0x8816
    InsertEnumString(GL_LUMINANCE32F_EXT);      // 0x8818
    InsertEnumString(GL_LUMINANCE_ALPHA32F_EXT);        // 0x8819
    InsertEnumString(GL_ALPHA16F_EXT);      // 0x881C
    InsertEnumString(GL_LUMINANCE16F_EXT);      // 0x881E
    InsertEnumString(GL_LUMINANCE_ALPHA16F_EXT);        // 0x881F
    InsertEnumString(GL_WRITEONLY_RENDERING_QCOM);      // 0x8823
    InsertEnumString(GL_MATRIX_PALETTE_OES);        // 0x8840
    InsertEnumString(GL_MAX_PALETTE_MATRICES_OES);      // 0x8842
    InsertEnumString(GL_CURRENT_PALETTE_MATRIX_OES);        // 0x8843
    InsertEnumString(GL_MATRIX_INDEX_ARRAY_OES);        // 0x8844
    InsertEnumString(GL_MATRIX_INDEX_ARRAY_SIZE_OES);       // 0x8846
    InsertEnumString(GL_MATRIX_INDEX_ARRAY_TYPE_OES);       // 0x8847
    InsertEnumString(GL_MATRIX_INDEX_ARRAY_STRIDE_OES);     // 0x8848
    InsertEnumString(GL_MATRIX_INDEX_ARRAY_POINTER_OES);        // 0x8849
    InsertEnumString(GL_WEIGHT_ARRAY_BUFFER_BINDING_OES);       // 0x889E
    InsertEnumString(GL_BUFFER_ACCESS_OES);     // 0x88BB
    InsertEnumString(GL_MODELVIEW_MATRIX_FLOAT_AS_INT_BITS_OES);        // 0x898D
    InsertEnumString(GL_PROJECTION_MATRIX_FLOAT_AS_INT_BITS_OES);       // 0x898E
    InsertEnumString(GL_TEXTURE_MATRIX_FLOAT_AS_INT_BITS_OES);      // 0x898F
    InsertEnumString(GL_SYNC_OBJECT_APPLE);     // 0x8A53
    InsertEnumString(GL_TEXTURE_CROP_RECT_OES);     // 0x8B9D
    InsertEnumString(GL_MATRIX_INDEX_ARRAY_BUFFER_BINDING_OES);     // 0x8B9E
    InsertEnumString(GL_TEXTURE_WIDTH_QCOM);        // 0x8BD2
    InsertEnumString(GL_TEXTURE_HEIGHT_QCOM);       // 0x8BD3
    InsertEnumString(GL_TEXTURE_DEPTH_QCOM);        // 0x8BD4
    InsertEnumString(GL_TEXTURE_INTERNAL_FORMAT_QCOM);      // 0x8BD5
    InsertEnumString(GL_TEXTURE_FORMAT_QCOM);       // 0x8BD6
    InsertEnumString(GL_TEXTURE_TYPE_QCOM);     // 0x8BD7
    InsertEnumString(GL_TEXTURE_IMAGE_VALID_QCOM);      // 0x8BD8
    InsertEnumString(GL_TEXTURE_NUM_LEVELS_QCOM);       // 0x8BD9
    InsertEnumString(GL_TEXTURE_TARGET_QCOM);       // 0x8BDA
    InsertEnumString(GL_TEXTURE_OBJECT_VALID_QCOM);     // 0x8BDB
    InsertEnumString(GL_STATE_RESTORE);     // 0x8BDC
    InsertEnumString(GL_COMPRESSED_RGB_PVRTC_4BPPV1_IMG);       // 0x8C00
    InsertEnumString(GL_COMPRESSED_RGB_PVRTC_2BPPV1_IMG);       // 0x8C01
    InsertEnumString(GL_COMPRESSED_RGBA_PVRTC_4BPPV1_IMG);      // 0x8C02
    InsertEnumString(GL_COMPRESSED_RGBA_PVRTC_2BPPV1_IMG);      // 0x8C03
    InsertEnumString(GL_MODULATE_COLOR_IMG);        // 0x8C04
    InsertEnumString(GL_RECIP_ADD_SIGNED_ALPHA_IMG);        // 0x8C05
    InsertEnumString(GL_TEXTURE_ALPHA_MODULATE_IMG);        // 0x8C06
    InsertEnumString(GL_FACTOR_ALPHA_MODULATE_IMG);     // 0x8C07
    InsertEnumString(GL_FRAGMENT_ALPHA_MODULATE_IMG);       // 0x8C08
    InsertEnumString(GL_ADD_BLEND_IMG);     // 0x8C09
    InsertEnumString(GL_SRGB_ALPHA_EXT);        // 0x8C42
    InsertEnumString(GL_ATC_RGB_AMD);       // 0x8C92
    InsertEnumString(GL_ATC_RGBA_EXPLICIT_ALPHA_AMD);       // 0x8C93
    InsertEnumString(GL_FRAMEBUFFER_INCOMPLETE_FORMATS_OES);        // 0x8CDA
    InsertEnumString(GL_STENCIL_INDEX1_OES);        // 0x8D46
    InsertEnumString(GL_STENCIL_INDEX4_OES);        // 0x8D47
    InsertEnumString(GL_TEXTURE_GEN_STR_OES);       // 0x8D60
    InsertEnumString(GL_ETC1_RGB8_OES);     // 0x8D64
    InsertEnumString(GL_TEXTURE_EXTERNAL_OES);      // 0x8D65
    InsertEnumString(GL_TEXTURE_BINDING_EXTERNAL_OES);      // 0x8D67
    InsertEnumString(GL_REQUIRED_TEXTURE_IMAGE_UNITS_OES);      // 0x8D68
    InsertEnumString(GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_SAMPLES_EXT);        // 0x8D6C
    InsertEnumString(GL_PERFMON_GLOBAL_MODE_QCOM);      // 0x8FA0
    InsertEnumString(GL_CONTEXT_ROBUST_ACCESS_EXT);     // 0x90F3
    InsertEnumString(GL_RENDERBUFFER_SAMPLES_IMG);      // 0x9133
    InsertEnumString(GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_IMG);        // 0x9134
    InsertEnumString(GL_MAX_SAMPLES_IMG);       // 0x9135
    InsertEnumString(GL_TEXTURE_SAMPLES_IMG);       // 0x9136
    InsertEnumString(GL_BGRA8_EXT);     // 0x93A1

    /* GLES 2 enums */
    InsertEnumString(GL_INVALID_FRAMEBUFFER_OPERATION);     // 0x0506
    InsertEnumString(GL_DEPTH_COMPONENT);       // 0x1902
    InsertEnumString(GL_CONSTANT_COLOR);        // 0x8001
    InsertEnumString(GL_ONE_MINUS_CONSTANT_COLOR);      // 0x8002
    InsertEnumString(GL_CONSTANT_ALPHA);        // 0x8003
    InsertEnumString(GL_ONE_MINUS_CONSTANT_ALPHA);      // 0x8004
    InsertEnumString(GL_BLEND_COLOR);       // 0x8005
    InsertEnumString(GL_FUNC_ADD);      // 0x8006
    InsertEnumString(GL_BLEND_EQUATION);        // 0x8009
    InsertEnumString(GL_FUNC_SUBTRACT);     // 0x800A
    InsertEnumString(GL_FUNC_REVERSE_SUBTRACT);     // 0x800B
    InsertEnumString(GL_RGBA4);     // 0x8056
    InsertEnumString(GL_RGB5_A1);       // 0x8057
    InsertEnumString(GL_BLEND_DST_RGB);     // 0x80C8
    InsertEnumString(GL_BLEND_SRC_RGB);     // 0x80C9
    InsertEnumString(GL_BLEND_DST_ALPHA);       // 0x80CA
    InsertEnumString(GL_BLEND_SRC_ALPHA);       // 0x80CB
    InsertEnumString(GL_DEPTH_COMPONENT16);     // 0x81A5
    InsertEnumString(GL_MIRRORED_REPEAT);       // 0x8370
    InsertEnumString(GL_MAX_RENDERBUFFER_SIZE);     // 0x84E8
    InsertEnumString(GL_INCR_WRAP);     // 0x8507
    InsertEnumString(GL_DECR_WRAP);     // 0x8508
    InsertEnumString(GL_TEXTURE_CUBE_MAP);      // 0x8513
    InsertEnumString(GL_TEXTURE_BINDING_CUBE_MAP);      // 0x8514
    InsertEnumString(GL_TEXTURE_CUBE_MAP_POSITIVE_X);       // 0x8515
    InsertEnumString(GL_TEXTURE_CUBE_MAP_NEGATIVE_X);       // 0x8516
    InsertEnumString(GL_TEXTURE_CUBE_MAP_POSITIVE_Y);       // 0x8517
    InsertEnumString(GL_TEXTURE_CUBE_MAP_NEGATIVE_Y);       // 0x8518
    InsertEnumString(GL_TEXTURE_CUBE_MAP_POSITIVE_Z);       // 0x8519
    InsertEnumString(GL_TEXTURE_CUBE_MAP_NEGATIVE_Z);       // 0x851A
    InsertEnumString(GL_MAX_CUBE_MAP_TEXTURE_SIZE);     // 0x851C
    InsertEnumString(GL_VERTEX_ATTRIB_ARRAY_ENABLED);       // 0x8622
    InsertEnumString(GL_VERTEX_ATTRIB_ARRAY_SIZE);      // 0x8623
    InsertEnumString(GL_VERTEX_ATTRIB_ARRAY_STRIDE);        // 0x8624
    InsertEnumString(GL_VERTEX_ATTRIB_ARRAY_TYPE);      // 0x8625
    InsertEnumString(GL_CURRENT_VERTEX_ATTRIB);     // 0x8626
    InsertEnumString(GL_VERTEX_ATTRIB_ARRAY_POINTER);       // 0x8645
    InsertEnumString(GL_STENCIL_BACK_FUNC);     // 0x8800
    InsertEnumString(GL_STENCIL_BACK_FAIL);     // 0x8801
    InsertEnumString(GL_STENCIL_BACK_PASS_DEPTH_FAIL);      // 0x8802
    InsertEnumString(GL_STENCIL_BACK_PASS_DEPTH_PASS);      // 0x8803
    InsertEnumString(GL_BLEND_EQUATION_ALPHA);      // 0x883D
    InsertEnumString(GL_MAX_VERTEX_ATTRIBS);        // 0x8869
    InsertEnumString(GL_VERTEX_ATTRIB_ARRAY_NORMALIZED);        // 0x886A
    InsertEnumString(GL_MAX_TEXTURE_IMAGE_UNITS);       // 0x8872
    InsertEnumString(GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING);        // 0x889F
    InsertEnumString(GL_STREAM_DRAW);       // 0x88E0
    InsertEnumString(GL_FRAGMENT_SHADER);       // 0x8B30
    InsertEnumString(GL_VERTEX_SHADER);     // 0x8B31
    InsertEnumString(GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS);        // 0x8B4C
    InsertEnumString(GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS);      // 0x8B4D
    InsertEnumString(GL_SHADER_TYPE);       // 0x8B4F
    InsertEnumString(GL_FLOAT_VEC2);        // 0x8B50
    InsertEnumString(GL_FLOAT_VEC3);        // 0x8B51
    InsertEnumString(GL_FLOAT_VEC4);        // 0x8B52
    InsertEnumString(GL_INT_VEC2);      // 0x8B53
    InsertEnumString(GL_INT_VEC3);      // 0x8B54
    InsertEnumString(GL_INT_VEC4);      // 0x8B55
    InsertEnumString(GL_BOOL);      // 0x8B56
    InsertEnumString(GL_BOOL_VEC2);     // 0x8B57
    InsertEnumString(GL_BOOL_VEC3);     // 0x8B58
    InsertEnumString(GL_BOOL_VEC4);     // 0x8B59
    InsertEnumString(GL_FLOAT_MAT2);        // 0x8B5A
    InsertEnumString(GL_FLOAT_MAT3);        // 0x8B5B
    InsertEnumString(GL_FLOAT_MAT4);        // 0x8B5C
    InsertEnumString(GL_SAMPLER_2D);        // 0x8B5E
    InsertEnumString(GL_SAMPLER_CUBE);      // 0x8B60
    InsertEnumString(GL_DELETE_STATUS);     // 0x8B80
    InsertEnumString(GL_COMPILE_STATUS);        // 0x8B81
    InsertEnumString(GL_LINK_STATUS);       // 0x8B82
    InsertEnumString(GL_VALIDATE_STATUS);       // 0x8B83
    InsertEnumString(GL_INFO_LOG_LENGTH);       // 0x8B84
    InsertEnumString(GL_ATTACHED_SHADERS);      // 0x8B85
    InsertEnumString(GL_ACTIVE_UNIFORMS);       // 0x8B86
    InsertEnumString(GL_ACTIVE_UNIFORM_MAX_LENGTH);     // 0x8B87
    InsertEnumString(GL_SHADER_SOURCE_LENGTH);      // 0x8B88
    InsertEnumString(GL_ACTIVE_ATTRIBUTES);     // 0x8B89
    InsertEnumString(GL_ACTIVE_ATTRIBUTE_MAX_LENGTH);       // 0x8B8A
    InsertEnumString(GL_SHADING_LANGUAGE_VERSION);      // 0x8B8C
    InsertEnumString(GL_CURRENT_PROGRAM);       // 0x8B8D
    InsertEnumString(GL_IMPLEMENTATION_COLOR_READ_TYPE);        // 0x8B9A
    InsertEnumString(GL_IMPLEMENTATION_COLOR_READ_FORMAT);      // 0x8B9B
    InsertEnumString(GL_STENCIL_BACK_REF);      // 0x8CA3
    InsertEnumString(GL_STENCIL_BACK_VALUE_MASK);       // 0x8CA4
    InsertEnumString(GL_STENCIL_BACK_WRITEMASK);        // 0x8CA5
    InsertEnumString(GL_FRAMEBUFFER_BINDING);       // 0x8CA6
    InsertEnumString(GL_RENDERBUFFER_BINDING);      // 0x8CA7
    InsertEnumString(GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE);        // 0x8CD0
    InsertEnumString(GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME);        // 0x8CD1
    InsertEnumString(GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL);      // 0x8CD2
    InsertEnumString(GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE);      // 0x8CD3
    InsertEnumString(GL_FRAMEBUFFER_COMPLETE);      // 0x8CD5
    InsertEnumString(GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT);     // 0x8CD6
    InsertEnumString(GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT);     // 0x8CD7
    InsertEnumString(GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS);     // 0x8CD9
    InsertEnumString(GL_FRAMEBUFFER_UNSUPPORTED);       // 0x8CDD
    InsertEnumString(GL_COLOR_ATTACHMENT0);     // 0x8CE0
    InsertEnumString(GL_DEPTH_ATTACHMENT);      // 0x8D00
    InsertEnumString(GL_STENCIL_ATTACHMENT);        // 0x8D20
    InsertEnumString(GL_FRAMEBUFFER);       // 0x8D40
    InsertEnumString(GL_RENDERBUFFER);      // 0x8D41
    InsertEnumString(GL_RENDERBUFFER_WIDTH);        // 0x8D42
    InsertEnumString(GL_RENDERBUFFER_HEIGHT);       // 0x8D43
    InsertEnumString(GL_RENDERBUFFER_INTERNAL_FORMAT);      // 0x8D44
    InsertEnumString(GL_STENCIL_INDEX8);        // 0x8D48
    InsertEnumString(GL_RENDERBUFFER_RED_SIZE);     // 0x8D50
    InsertEnumString(GL_RENDERBUFFER_GREEN_SIZE);       // 0x8D51
    InsertEnumString(GL_RENDERBUFFER_BLUE_SIZE);        // 0x8D52
    InsertEnumString(GL_RENDERBUFFER_ALPHA_SIZE);       // 0x8D53
    InsertEnumString(GL_RENDERBUFFER_DEPTH_SIZE);       // 0x8D54
    InsertEnumString(GL_RENDERBUFFER_STENCIL_SIZE);     // 0x8D55
    InsertEnumString(GL_RGB565);        // 0x8D62
    InsertEnumString(GL_LOW_FLOAT);     // 0x8DF0
    InsertEnumString(GL_MEDIUM_FLOAT);      // 0x8DF1
    InsertEnumString(GL_HIGH_FLOAT);        // 0x8DF2
    InsertEnumString(GL_LOW_INT);       // 0x8DF3
    InsertEnumString(GL_MEDIUM_INT);        // 0x8DF4
    InsertEnumString(GL_HIGH_INT);      // 0x8DF5
    InsertEnumString(GL_SHADER_BINARY_FORMATS);     // 0x8DF8
    InsertEnumString(GL_NUM_SHADER_BINARY_FORMATS);     // 0x8DF9
    InsertEnumString(GL_SHADER_COMPILER);       // 0x8DFA
    InsertEnumString(GL_MAX_VERTEX_UNIFORM_VECTORS);        // 0x8DFB
    InsertEnumString(GL_MAX_VARYING_VECTORS);       // 0x8DFC
    InsertEnumString(GL_MAX_FRAGMENT_UNIFORM_VECTORS);      // 0x8DFD

    /* GLES 2 EXT enums */
    InsertEnumString(GL_POLYGON_MODE_NV);       // 0x0B40
    InsertEnumString(GL_DRAW_BUFFER_EXT);       // 0x0C01
    InsertEnumString(GL_POINT_NV);      // 0x1B00
    InsertEnumString(GL_LINE_NV);       // 0x1B01
    InsertEnumString(GL_FILL_NV);       // 0x1B02
    InsertEnumString(GL_POLYGON_OFFSET_POINT_NV);       // 0x2A01
    InsertEnumString(GL_POLYGON_OFFSET_LINE_NV);        // 0x2A02
    InsertEnumString(GL_CLIP_DISTANCE6_APPLE);      // 0x3006
    InsertEnumString(GL_CLIP_DISTANCE7_APPLE);      // 0x3007
    InsertEnumString(GL_MIN);       // 0x8007
    InsertEnumString(GL_MAX);       // 0x8008
    //InsertEnumString(GL_ALPHA8_OES);      // 0x803C
    //InsertEnumString(GL_LUMINANCE8_OES);      // 0x8040
    //InsertEnumString(GL_LUMINANCE4_ALPHA4_OES);       // 0x8043
    //InsertEnumString(GL_LUMINANCE8_ALPHA8_OES);       // 0x8045
    InsertEnumString(GL_RGB16_EXT);     // 0x8054
    InsertEnumString(GL_RGBA16_EXT);        // 0x805B
    InsertEnumString(GL_TEXTURE_3D);        // 0x806F
    InsertEnumString(GL_BUFFER_IMMUTABLE_STORAGE_EXT);      // 0x821F
    InsertEnumString(GL_BUFFER_STORAGE_FLAGS_EXT);      // 0x8220
    InsertEnumString(GL_PRIMITIVE_RESTART_FOR_PATCHES_SUPPORTED);       // 0x8221
    InsertEnumString(GL_R16_EXT);       // 0x822A
    InsertEnumString(GL_RG16_EXT);      // 0x822C
    InsertEnumString(GL_MAX_VIEWPORTS_NV);      // 0x825B
    InsertEnumString(GL_VIEWPORT_SUBPIXEL_BITS_NV);     // 0x825C
    InsertEnumString(GL_VIEWPORT_BOUNDS_RANGE_NV);      // 0x825D
    InsertEnumString(GL_VIEWPORT_INDEX_PROVOKING_VERTEX_NV);        // 0x825F
    InsertEnumString(GL_TEXTURE_VIEW_MIN_LEVEL_OES);        // 0x82DB
    InsertEnumString(GL_TEXTURE_VIEW_NUM_LEVELS_OES);       // 0x82DC
    InsertEnumString(GL_TEXTURE_VIEW_MIN_LAYER_OES);        // 0x82DD
    InsertEnumString(GL_TEXTURE_VIEW_NUM_LAYERS_OES);       // 0x82DE
    InsertEnumString(GL_TEXTURE_IMMUTABLE_LEVELS);      // 0x82DF
    InsertEnumString(GL_SAMPLER);       // 0x82E6
    InsertEnumString(GL_CONTEXT_RELEASE_BEHAVIOR_KHR);      // 0x82FB
    InsertEnumString(GL_CONTEXT_RELEASE_BEHAVIOR_FLUSH_KHR);        // 0x82FC
    InsertEnumString(GL_COMPRESSED_RGBA_S3TC_DXT3_EXT);     // 0x83F2
    InsertEnumString(GL_COMPRESSED_RGBA_S3TC_DXT5_EXT);     // 0x83F3
    InsertEnumString(GL_PERFQUERY_DONOT_FLUSH_INTEL);       // 0x83F9
    InsertEnumString(GL_PERFQUERY_FLUSH_INTEL);     // 0x83FA
    InsertEnumString(GL_PERFQUERY_WAIT_INTEL);      // 0x83FB
    InsertEnumString(GL_PATH_TRANSPOSE_MODELVIEW_MATRIX_NV);        // 0x84E3
    InsertEnumString(GL_PATH_TRANSPOSE_PROJECTION_MATRIX_NV);       // 0x84E4
    InsertEnumString(GL_UNSIGNED_SHORT_8_8_APPLE);      // 0x85BA
    InsertEnumString(GL_UNSIGNED_SHORT_8_8_REV_APPLE);      // 0x85BB
    InsertEnumString(GL_Z400_BINARY_AMD);       // 0x8740
    InsertEnumString(GL_QUERY_COUNTER_BITS_EXT);        // 0x8864
    InsertEnumString(GL_TIME_ELAPSED_EXT);      // 0x88BF
    InsertEnumString(GL_ETC1_SRGB8_NV);     // 0x88EE
    InsertEnumString(GL_RGB_422_APPLE);     // 0x8A1F
    InsertEnumString(GL_TEXTURE_SRGB_DECODE_EXT);       // 0x8A48
    InsertEnumString(GL_DECODE_EXT);        // 0x8A49
    InsertEnumString(GL_SKIP_DECODE_EXT);       // 0x8A4A
    InsertEnumString(GL_PROGRAM_PIPELINE_OBJECT_EXT);       // 0x8A4F
    InsertEnumString(GL_RGB_RAW_422_APPLE);     // 0x8A51
    InsertEnumString(GL_FRAGMENT_SHADER_DISCARDS_SAMPLES_EXT);      // 0x8A52
    InsertEnumString(GL_COMPRESSED_SRGB_PVRTC_2BPPV1_EXT);      // 0x8A54
    InsertEnumString(GL_COMPRESSED_SRGB_PVRTC_4BPPV1_EXT);      // 0x8A55
    InsertEnumString(GL_COMPRESSED_SRGB_ALPHA_PVRTC_2BPPV1_EXT);        // 0x8A56
    InsertEnumString(GL_COMPRESSED_SRGB_ALPHA_PVRTC_4BPPV1_EXT);        // 0x8A57
    InsertEnumString(GL_PROGRAM_OBJECT_EXT);        // 0x8B40
    InsertEnumString(GL_SHADER_OBJECT_EXT);     // 0x8B48
    InsertEnumString(GL_COUNTER_TYPE_AMD);      // 0x8BC0
    InsertEnumString(GL_COUNTER_RANGE_AMD);     // 0x8BC1
    InsertEnumString(GL_UNSIGNED_INT64_AMD);        // 0x8BC2
    InsertEnumString(GL_PERCENTAGE_AMD);        // 0x8BC3
    InsertEnumString(GL_PERFMON_RESULT_AVAILABLE_AMD);      // 0x8BC4
    InsertEnumString(GL_PERFMON_RESULT_SIZE_AMD);       // 0x8BC5
    InsertEnumString(GL_PERFMON_RESULT_AMD);        // 0x8BC6
    InsertEnumString(GL_SAMPLER_EXTERNAL_2D_Y2Y_EXT);       // 0x8BE7
    InsertEnumString(GL_SGX_BINARY_IMG);        // 0x8C0A
    InsertEnumString(GL_TEXTURE_2D_ARRAY);      // 0x8C1A
    InsertEnumString(GL_SLUMINANCE_ALPHA_NV);       // 0x8C44
    InsertEnumString(GL_SLUMINANCE8_ALPHA8_NV);     // 0x8C45
    InsertEnumString(GL_SLUMINANCE_NV);     // 0x8C46
    InsertEnumString(GL_SLUMINANCE8_NV);        // 0x8C47
    InsertEnumString(GL_COMPRESSED_SRGB_S3TC_DXT1_NV);      // 0x8C4C
    InsertEnumString(GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT1_NV);        // 0x8C4D
    InsertEnumString(GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT3_NV);        // 0x8C4E
    InsertEnumString(GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT5_NV);        // 0x8C4F
    InsertEnumString(GL_HALF_FLOAT_OES);        // 0x8D61
    //InsertEnumString(GL_SAMPLER_EXTERNAL_OES);        // 0x8D66
    InsertEnumString(GL_FRAMEBUFFER_SRGB_EXT);      // 0x8DB9
    InsertEnumString(GL_UNSIGNED_INT_10_10_10_2_OES);       // 0x8DF6
    InsertEnumString(GL_INT_10_10_10_2_OES);        // 0x8DF7
    InsertEnumString(GL_QUERY_WAIT_NV);     // 0x8E13
    InsertEnumString(GL_QUERY_NO_WAIT_NV);      // 0x8E14
    InsertEnumString(GL_QUERY_BY_REGION_WAIT_NV);       // 0x8E15
    InsertEnumString(GL_QUERY_BY_REGION_NO_WAIT_NV);        // 0x8E16
    InsertEnumString(GL_COLOR_SAMPLES_NV);      // 0x8E20
    InsertEnumString(GL_TRANSFORM_FEEDBACK);        // 0x8E22
    InsertEnumString(GL_TIMESTAMP_EXT);     // 0x8E28
    InsertEnumString(GL_DEPTH_COMPONENT16_NONLINEAR_NV);        // 0x8E2C
    InsertEnumString(GL_COVERAGE_COMPONENT_NV);     // 0x8ED0
    InsertEnumString(GL_COVERAGE_COMPONENT4_NV);        // 0x8ED1
    InsertEnumString(GL_COVERAGE_ATTACHMENT_NV);        // 0x8ED2
    InsertEnumString(GL_COVERAGE_BUFFERS_NV);       // 0x8ED3
    InsertEnumString(GL_COVERAGE_SAMPLES_NV);       // 0x8ED4
    InsertEnumString(GL_COVERAGE_ALL_FRAGMENTS_NV);     // 0x8ED5
    InsertEnumString(GL_COVERAGE_EDGE_FRAGMENTS_NV);        // 0x8ED6
    InsertEnumString(GL_COVERAGE_AUTOMATIC_NV);     // 0x8ED7
    InsertEnumString(GL_MALI_SHADER_BINARY_ARM);        // 0x8F60
    InsertEnumString(GL_MALI_PROGRAM_BINARY_ARM);       // 0x8F61
    InsertEnumString(GL_MAX_SHADER_PIXEL_LOCAL_STORAGE_FAST_SIZE_EXT);      // 0x8F63
    InsertEnumString(GL_SHADER_PIXEL_LOCAL_STORAGE_EXT);        // 0x8F64
    InsertEnumString(GL_FETCH_PER_SAMPLE_ARM);      // 0x8F65
    InsertEnumString(GL_FRAGMENT_SHADER_FRAMEBUFFER_FETCH_MRT_ARM);     // 0x8F66
    InsertEnumString(GL_MAX_SHADER_PIXEL_LOCAL_STORAGE_SIZE_EXT);       // 0x8F67
    InsertEnumString(GL_R8_SNORM);      // 0x8F94
    InsertEnumString(GL_RG8_SNORM);     // 0x8F95
    InsertEnumString(GL_RGBA8_SNORM);       // 0x8F97
    InsertEnumString(GL_R16_SNORM_EXT);     // 0x8F98
    InsertEnumString(GL_RG16_SNORM_EXT);        // 0x8F99
    InsertEnumString(GL_RGB16_SNORM_EXT);       // 0x8F9A
    InsertEnumString(GL_RGBA16_SNORM_EXT);      // 0x8F9B
    InsertEnumString(GL_BINNING_CONTROL_HINT_QCOM);     // 0x8FB0
    InsertEnumString(GL_CPU_OPTIMIZED_QCOM);        // 0x8FB1
    InsertEnumString(GL_GPU_OPTIMIZED_QCOM);        // 0x8FB2
    InsertEnumString(GL_RENDER_DIRECT_TO_FRAMEBUFFER_QCOM);     // 0x8FB3
    InsertEnumString(GL_GPU_DISJOINT_EXT);      // 0x8FBB
    InsertEnumString(GL_SR8_EXT);       // 0x8FBD
    InsertEnumString(GL_SRG8_EXT);      // 0x8FBE
    InsertEnumString(GL_SHADER_BINARY_VIV);     // 0x8FC4
    InsertEnumString(GL_PATH_FORMAT_SVG_NV);        // 0x9070
    InsertEnumString(GL_PATH_FORMAT_PS_NV);     // 0x9071
    InsertEnumString(GL_STANDARD_FONT_NAME_NV);     // 0x9072
    InsertEnumString(GL_SYSTEM_FONT_NAME_NV);       // 0x9073
    InsertEnumString(GL_FILE_NAME_NV);      // 0x9074
    InsertEnumString(GL_PATH_STROKE_WIDTH_NV);      // 0x9075
    InsertEnumString(GL_PATH_END_CAPS_NV);      // 0x9076
    InsertEnumString(GL_PATH_INITIAL_END_CAP_NV);       // 0x9077
    InsertEnumString(GL_PATH_TERMINAL_END_CAP_NV);      // 0x9078
    InsertEnumString(GL_PATH_JOIN_STYLE_NV);        // 0x9079
    InsertEnumString(GL_PATH_MITER_LIMIT_NV);       // 0x907A
    InsertEnumString(GL_PATH_DASH_CAPS_NV);     // 0x907B
    InsertEnumString(GL_PATH_INITIAL_DASH_CAP_NV);      // 0x907C
    InsertEnumString(GL_PATH_TERMINAL_DASH_CAP_NV);     // 0x907D
    InsertEnumString(GL_PATH_DASH_OFFSET_NV);       // 0x907E
    InsertEnumString(GL_PATH_CLIENT_LENGTH_NV);     // 0x907F
    InsertEnumString(GL_PATH_FILL_MODE_NV);     // 0x9080
    InsertEnumString(GL_PATH_FILL_MASK_NV);     // 0x9081
    InsertEnumString(GL_PATH_FILL_COVER_MODE_NV);       // 0x9082
    InsertEnumString(GL_PATH_STROKE_COVER_MODE_NV);     // 0x9083
    InsertEnumString(GL_PATH_STROKE_MASK_NV);       // 0x9084
    InsertEnumString(GL_COUNT_UP_NV);       // 0x9088
    InsertEnumString(GL_COUNT_DOWN_NV);     // 0x9089
    InsertEnumString(GL_PATH_OBJECT_BOUNDING_BOX_NV);       // 0x908A
    InsertEnumString(GL_CONVEX_HULL_NV);        // 0x908B
    InsertEnumString(GL_BOUNDING_BOX_NV);       // 0x908D
    InsertEnumString(GL_TRANSLATE_X_NV);        // 0x908E
    InsertEnumString(GL_TRANSLATE_Y_NV);        // 0x908F
    InsertEnumString(GL_TRANSLATE_2D_NV);       // 0x9090
    InsertEnumString(GL_TRANSLATE_3D_NV);       // 0x9091
    InsertEnumString(GL_AFFINE_2D_NV);      // 0x9092
    InsertEnumString(GL_AFFINE_3D_NV);      // 0x9094
    InsertEnumString(GL_TRANSPOSE_AFFINE_2D_NV);        // 0x9096
    InsertEnumString(GL_TRANSPOSE_AFFINE_3D_NV);        // 0x9098
    InsertEnumString(GL_UTF8_NV);       // 0x909A
    InsertEnumString(GL_UTF16_NV);      // 0x909B
    InsertEnumString(GL_BOUNDING_BOX_OF_BOUNDING_BOXES_NV);     // 0x909C
    InsertEnumString(GL_PATH_COMMAND_COUNT_NV);     // 0x909D
    InsertEnumString(GL_PATH_COORD_COUNT_NV);       // 0x909E
    InsertEnumString(GL_PATH_DASH_ARRAY_COUNT_NV);      // 0x909F
    InsertEnumString(GL_PATH_COMPUTED_LENGTH_NV);       // 0x90A0
    InsertEnumString(GL_PATH_FILL_BOUNDING_BOX_NV);     // 0x90A1
    InsertEnumString(GL_PATH_STROKE_BOUNDING_BOX_NV);       // 0x90A2
    InsertEnumString(GL_SQUARE_NV);     // 0x90A3
    InsertEnumString(GL_ROUND_NV);      // 0x90A4
    InsertEnumString(GL_TRIANGULAR_NV);     // 0x90A5
    InsertEnumString(GL_BEVEL_NV);      // 0x90A6
    InsertEnumString(GL_MITER_REVERT_NV);       // 0x90A7
    InsertEnumString(GL_MITER_TRUNCATE_NV);     // 0x90A8
    InsertEnumString(GL_SKIP_MISSING_GLYPH_NV);     // 0x90A9
    InsertEnumString(GL_USE_MISSING_GLYPH_NV);      // 0x90AA
    InsertEnumString(GL_PATH_ERROR_POSITION_NV);        // 0x90AB
    InsertEnumString(GL_ACCUM_ADJACENT_PAIRS_NV);       // 0x90AD
    InsertEnumString(GL_ADJACENT_PAIRS_NV);     // 0x90AE
    InsertEnumString(GL_FIRST_TO_REST_NV);      // 0x90AF
    InsertEnumString(GL_PATH_GEN_MODE_NV);      // 0x90B0
    InsertEnumString(GL_PATH_GEN_COEFF_NV);     // 0x90B1
    InsertEnumString(GL_PATH_GEN_COMPONENTS_NV);        // 0x90B3
    InsertEnumString(GL_PATH_DASH_OFFSET_RESET_NV);     // 0x90B4
    InsertEnumString(GL_MOVE_TO_RESETS_NV);     // 0x90B5
    InsertEnumString(GL_MOVE_TO_CONTINUES_NV);      // 0x90B6
    InsertEnumString(GL_PATH_STENCIL_FUNC_NV);      // 0x90B7
    InsertEnumString(GL_PATH_STENCIL_REF_NV);       // 0x90B8
    InsertEnumString(GL_PATH_STENCIL_VALUE_MASK_NV);        // 0x90B9
    InsertEnumString(GL_PATH_STENCIL_DEPTH_OFFSET_FACTOR_NV);       // 0x90BD
    InsertEnumString(GL_PATH_STENCIL_DEPTH_OFFSET_UNITS_NV);        // 0x90BE
    InsertEnumString(GL_PATH_COVER_DEPTH_FUNC_NV);      // 0x90BF
    InsertEnumString(GL_COLOR_ATTACHMENT_EXT);      // 0x90F0
    InsertEnumString(GL_MULTIVIEW_EXT);     // 0x90F1
    InsertEnumString(GL_MAX_MULTIVIEW_BUFFERS_EXT);     // 0x90F2
    InsertEnumString(GL_TEXTURE_2D_MULTISAMPLE);        // 0x9100
    InsertEnumString(GL_TEXTURE_2D_MULTISAMPLE_ARRAY);      // 0x9102
    InsertEnumString(GL_SGX_PROGRAM_BINARY_IMG);        // 0x9130
    InsertEnumString(GL_COMPRESSED_RGBA_PVRTC_2BPPV2_IMG);      // 0x9137
    InsertEnumString(GL_COMPRESSED_RGBA_PVRTC_4BPPV2_IMG);      // 0x9138
    InsertEnumString(GL_BUFFER_OBJECT_EXT);     // 0x9151
    InsertEnumString(GL_QUERY_OBJECT_EXT);      // 0x9153
    InsertEnumString(GL_VERTEX_ARRAY_OBJECT_EXT);       // 0x9154
    InsertEnumString(GL_VIRTUAL_PAGE_SIZE_X_EXT);       // 0x9195
    InsertEnumString(GL_VIRTUAL_PAGE_SIZE_Y_EXT);       // 0x9196
    InsertEnumString(GL_VIRTUAL_PAGE_SIZE_Z_EXT);       // 0x9197
    InsertEnumString(GL_MAX_SPARSE_TEXTURE_SIZE_EXT);       // 0x9198
    InsertEnumString(GL_MAX_SPARSE_3D_TEXTURE_SIZE_EXT);        // 0x9199
    InsertEnumString(GL_MAX_SPARSE_ARRAY_TEXTURE_LAYERS_EXT);       // 0x919A
    InsertEnumString(GL_TEXTURE_SPARSE_EXT);        // 0x91A6
    InsertEnumString(GL_VIRTUAL_PAGE_SIZE_INDEX_EXT);       // 0x91A7
    InsertEnumString(GL_NUM_VIRTUAL_PAGE_SIZES_EXT);        // 0x91A8
    InsertEnumString(GL_SPARSE_TEXTURE_FULL_ARRAY_CUBE_MIPMAPS_EXT);        // 0x91A9
    InsertEnumString(GL_NUM_SPARSE_LEVELS_EXT);     // 0x91AA
    InsertEnumString(GL_SHADER_BINARY_DMP);     // 0x9250
    InsertEnumString(GL_SMAPHS30_PROGRAM_BINARY_DMP);       // 0x9251
    InsertEnumString(GL_SMAPHS_PROGRAM_BINARY_DMP);     // 0x9252
    InsertEnumString(GL_DMP_PROGRAM_BINARY_DMP);        // 0x9253
    InsertEnumString(GL_GCCSO_SHADER_BINARY_FJ);        // 0x9260
    InsertEnumString(GL_BLEND_PREMULTIPLIED_SRC_NV);        // 0x9280
    InsertEnumString(GL_BLEND_OVERLAP_NV);      // 0x9281
    InsertEnumString(GL_UNCORRELATED_NV);       // 0x9282
    InsertEnumString(GL_DISJOINT_NV);       // 0x9283
    InsertEnumString(GL_CONJOINT_NV);       // 0x9284
    InsertEnumString(GL_BLEND_ADVANCED_COHERENT_KHR);       // 0x9285
    InsertEnumString(GL_SRC_NV);        // 0x9286
    InsertEnumString(GL_DST_NV);        // 0x9287
    InsertEnumString(GL_SRC_OVER_NV);       // 0x9288
    InsertEnumString(GL_DST_OVER_NV);       // 0x9289
    InsertEnumString(GL_SRC_IN_NV);     // 0x928A
    InsertEnumString(GL_DST_IN_NV);     // 0x928B
    InsertEnumString(GL_SRC_OUT_NV);        // 0x928C
    InsertEnumString(GL_DST_OUT_NV);        // 0x928D
    InsertEnumString(GL_SRC_ATOP_NV);       // 0x928E
    InsertEnumString(GL_DST_ATOP_NV);       // 0x928F
    InsertEnumString(GL_PLUS_NV);       // 0x9291
    InsertEnumString(GL_PLUS_DARKER_NV);        // 0x9292
    InsertEnumString(GL_MINUS_NV);      // 0x929F
    InsertEnumString(GL_CONTRAST_NV);       // 0x92A1
    InsertEnumString(GL_INVERT_RGB_NV);     // 0x92A3
    InsertEnumString(GL_LINEARDODGE_NV);        // 0x92A4
    InsertEnumString(GL_LINEARBURN_NV);     // 0x92A5
    InsertEnumString(GL_VIVIDLIGHT_NV);     // 0x92A6
    InsertEnumString(GL_LINEARLIGHT_NV);        // 0x92A7
    InsertEnumString(GL_PINLIGHT_NV);       // 0x92A8
    InsertEnumString(GL_HARDMIX_NV);        // 0x92A9
    InsertEnumString(GL_PLUS_CLAMPED_NV);       // 0x92B1
    InsertEnumString(GL_PLUS_CLAMPED_ALPHA_NV);     // 0x92B2
    InsertEnumString(GL_MINUS_CLAMPED_NV);      // 0x92B3
    InsertEnumString(GL_INVERT_OVG_NV);     // 0x92B4
    InsertEnumString(GL_FRAGMENT_COVERAGE_TO_COLOR_NV);     // 0x92DD
    InsertEnumString(GL_FRAGMENT_COVERAGE_COLOR_NV);        // 0x92DE
    InsertEnumString(GL_RASTER_MULTISAMPLE_EXT);        // 0x9327
    InsertEnumString(GL_RASTER_SAMPLES_EXT);        // 0x9328
    InsertEnumString(GL_MAX_RASTER_SAMPLES_EXT);        // 0x9329
    InsertEnumString(GL_RASTER_FIXED_SAMPLE_LOCATIONS_EXT);     // 0x932A
    InsertEnumString(GL_MULTISAMPLE_RASTERIZATION_ALLOWED_EXT);     // 0x932B
    InsertEnumString(GL_EFFECTIVE_RASTER_SAMPLES_EXT);      // 0x932C
    InsertEnumString(GL_DEPTH_SAMPLES_NV);      // 0x932D
    InsertEnumString(GL_STENCIL_SAMPLES_NV);        // 0x932E
    InsertEnumString(GL_MIXED_DEPTH_SAMPLES_SUPPORTED_NV);      // 0x932F
    InsertEnumString(GL_MIXED_STENCIL_SAMPLES_SUPPORTED_NV);        // 0x9330
    InsertEnumString(GL_COVERAGE_MODULATION_TABLE_NV);      // 0x9331
    InsertEnumString(GL_COVERAGE_MODULATION_NV);        // 0x9332
    InsertEnumString(GL_COVERAGE_MODULATION_TABLE_SIZE_NV);     // 0x9333
    InsertEnumString(GL_FILL_RECTANGLE_NV);     // 0x933C
    InsertEnumString(GL_SAMPLE_LOCATION_SUBPIXEL_BITS_NV);      // 0x933D
    InsertEnumString(GL_SAMPLE_LOCATION_PIXEL_GRID_WIDTH_NV);       // 0x933E
    InsertEnumString(GL_SAMPLE_LOCATION_PIXEL_GRID_HEIGHT_NV);      // 0x933F
    InsertEnumString(GL_PROGRAMMABLE_SAMPLE_LOCATION_TABLE_SIZE_NV);        // 0x9340
    InsertEnumString(GL_PROGRAMMABLE_SAMPLE_LOCATION_NV);       // 0x9341
    InsertEnumString(GL_FRAMEBUFFER_PROGRAMMABLE_SAMPLE_LOCATIONS_NV);      // 0x9342
    InsertEnumString(GL_FRAMEBUFFER_SAMPLE_LOCATION_PIXEL_GRID_NV);     // 0x9343
    InsertEnumString(GL_CONSERVATIVE_RASTERIZATION_NV);     // 0x9346
    InsertEnumString(GL_SUBPIXEL_PRECISION_BIAS_X_BITS_NV);     // 0x9347
    InsertEnumString(GL_SUBPIXEL_PRECISION_BIAS_Y_BITS_NV);     // 0x9348
    InsertEnumString(GL_MAX_SUBPIXEL_PRECISION_BIAS_BITS_NV);       // 0x9349
    InsertEnumString(GL_FONT_GLYPHS_AVAILABLE_NV);      // 0x9368
    InsertEnumString(GL_FONT_TARGET_UNAVAILABLE_NV);        // 0x9369
    InsertEnumString(GL_FONT_UNAVAILABLE_NV);       // 0x936A
    InsertEnumString(GL_FONT_UNINTELLIGIBLE_NV);        // 0x936B
    InsertEnumString(GL_STANDARD_FONT_FORMAT_NV);       // 0x936C
    InsertEnumString(GL_FRAGMENT_INPUT_NV);     // 0x936D
    InsertEnumString(GL_MULTISAMPLES_NV);       // 0x9371
    InsertEnumString(GL_SUPERSAMPLE_SCALE_X_NV);        // 0x9372
    InsertEnumString(GL_SUPERSAMPLE_SCALE_Y_NV);        // 0x9373
    InsertEnumString(GL_CONFORMANT_NV);     // 0x9374
    InsertEnumString(GL_TRANSLATED_SHADER_SOURCE_LENGTH_ANGLE);     // 0x93A0
    InsertEnumString(GL_TEXTURE_USAGE_ANGLE);       // 0x93A2
    InsertEnumString(GL_FRAMEBUFFER_ATTACHMENT_ANGLE);      // 0x93A3
    InsertEnumString(GL_PACK_REVERSE_ROW_ORDER_ANGLE);      // 0x93A4
    InsertEnumString(GL_PROGRAM_BINARY_ANGLE);      // 0x93A6
    InsertEnumString(GL_COMPRESSED_RGBA_ASTC_3x3x3_OES);        // 0x93C0
    InsertEnumString(GL_COMPRESSED_RGBA_ASTC_4x3x3_OES);        // 0x93C1
    InsertEnumString(GL_COMPRESSED_RGBA_ASTC_4x4x3_OES);        // 0x93C2
    InsertEnumString(GL_COMPRESSED_RGBA_ASTC_4x4x4_OES);        // 0x93C3
    InsertEnumString(GL_COMPRESSED_RGBA_ASTC_5x4x4_OES);        // 0x93C4
    InsertEnumString(GL_COMPRESSED_RGBA_ASTC_5x5x4_OES);        // 0x93C5
    InsertEnumString(GL_COMPRESSED_RGBA_ASTC_5x5x5_OES);        // 0x93C6
    InsertEnumString(GL_COMPRESSED_RGBA_ASTC_6x5x5_OES);        // 0x93C7
    InsertEnumString(GL_COMPRESSED_RGBA_ASTC_6x6x5_OES);        // 0x93C8
    InsertEnumString(GL_COMPRESSED_RGBA_ASTC_6x6x6_OES);        // 0x93C9
    InsertEnumString(GL_COMPRESSED_SRGB8_ALPHA8_ASTC_3x3x3_OES);        // 0x93E0
    InsertEnumString(GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x3x3_OES);        // 0x93E1
    InsertEnumString(GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4x3_OES);        // 0x93E2
    InsertEnumString(GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4x4_OES);        // 0x93E3
    InsertEnumString(GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x4x4_OES);        // 0x93E4
    InsertEnumString(GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5x4_OES);        // 0x93E5
    InsertEnumString(GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5x5_OES);        // 0x93E6
    InsertEnumString(GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x5x5_OES);        // 0x93E7
    InsertEnumString(GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6x5_OES);        // 0x93E8
    InsertEnumString(GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6x6_OES);        // 0x93E9
    InsertEnumString(GL_COMPRESSED_SRGB_ALPHA_PVRTC_2BPPV2_IMG);        // 0x93F0
    InsertEnumString(GL_COMPRESSED_SRGB_ALPHA_PVRTC_4BPPV2_IMG);        // 0x93F1
    InsertEnumString(GL_PERFQUERY_COUNTER_EVENT_INTEL);     // 0x94F0
    InsertEnumString(GL_PERFQUERY_COUNTER_DURATION_NORM_INTEL);     // 0x94F1
    InsertEnumString(GL_PERFQUERY_COUNTER_DURATION_RAW_INTEL);      // 0x94F2
    InsertEnumString(GL_PERFQUERY_COUNTER_THROUGHPUT_INTEL);        // 0x94F3
    InsertEnumString(GL_PERFQUERY_COUNTER_RAW_INTEL);       // 0x94F4
    InsertEnumString(GL_PERFQUERY_COUNTER_TIMESTAMP_INTEL);     // 0x94F5
    InsertEnumString(GL_PERFQUERY_COUNTER_DATA_UINT32_INTEL);       // 0x94F8
    InsertEnumString(GL_PERFQUERY_COUNTER_DATA_UINT64_INTEL);       // 0x94F9
    InsertEnumString(GL_PERFQUERY_COUNTER_DATA_FLOAT_INTEL);        // 0x94FA
    InsertEnumString(GL_PERFQUERY_COUNTER_DATA_DOUBLE_INTEL);       // 0x94FB
    InsertEnumString(GL_PERFQUERY_COUNTER_DATA_BOOL32_INTEL);       // 0x94FC
    InsertEnumString(GL_PERFQUERY_QUERY_NAME_LENGTH_MAX_INTEL);     // 0x94FD
    InsertEnumString(GL_PERFQUERY_COUNTER_NAME_LENGTH_MAX_INTEL);       // 0x94FE
    InsertEnumString(GL_PERFQUERY_COUNTER_DESC_LENGTH_MAX_INTEL);       // 0x94FF
    InsertEnumString(GL_PERFQUERY_GPA_EXTENDED_COUNTERS_INTEL);     // 0x9500

    /* GLES 3 enums */
    InsertEnumString(GL_READ_BUFFER);       // 0x0C02
    InsertEnumString(GL_UNPACK_ROW_LENGTH);     // 0x0CF2
    InsertEnumString(GL_UNPACK_SKIP_ROWS);      // 0x0CF3
    InsertEnumString(GL_UNPACK_SKIP_PIXELS);        // 0x0CF4
    InsertEnumString(GL_PACK_ROW_LENGTH);       // 0x0D02
    InsertEnumString(GL_PACK_SKIP_ROWS);        // 0x0D03
    InsertEnumString(GL_PACK_SKIP_PIXELS);      // 0x0D04
    InsertEnumString(GL_HALF_FLOAT);        // 0x140B
    InsertEnumString(GL_COLOR);     // 0x1800
    InsertEnumString(GL_DEPTH);     // 0x1801
    InsertEnumString(GL_STENCIL);       // 0x1802
    InsertEnumString(GL_RED);       // 0x1903
    InsertEnumString(GL_GREEN);     // 0x1904
    InsertEnumString(GL_BLUE);      // 0x1905
    InsertEnumString(GL_RGB8);      // 0x8051
    InsertEnumString(GL_RGBA8);     // 0x8058
    InsertEnumString(GL_RGB10_A2);      // 0x8059
    InsertEnumString(GL_TEXTURE_BINDING_3D);        // 0x806A
    InsertEnumString(GL_UNPACK_SKIP_IMAGES);        // 0x806D
    InsertEnumString(GL_UNPACK_IMAGE_HEIGHT);       // 0x806E
    InsertEnumString(GL_TEXTURE_WRAP_R);        // 0x8072
    InsertEnumString(GL_MAX_3D_TEXTURE_SIZE);       // 0x8073
    InsertEnumString(GL_MAX_ELEMENTS_VERTICES);     // 0x80E8
    InsertEnumString(GL_MAX_ELEMENTS_INDICES);      // 0x80E9
    InsertEnumString(GL_TEXTURE_MIN_LOD);       // 0x813A
    InsertEnumString(GL_TEXTURE_MAX_LOD);       // 0x813B
    InsertEnumString(GL_TEXTURE_BASE_LEVEL);        // 0x813C
    InsertEnumString(GL_TEXTURE_MAX_LEVEL);     // 0x813D
    InsertEnumString(GL_DEPTH_COMPONENT24);     // 0x81A6
    InsertEnumString(GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING);     // 0x8210
    InsertEnumString(GL_FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE);     // 0x8211
    InsertEnumString(GL_FRAMEBUFFER_ATTACHMENT_RED_SIZE);       // 0x8212
    InsertEnumString(GL_FRAMEBUFFER_ATTACHMENT_GREEN_SIZE);     // 0x8213
    InsertEnumString(GL_FRAMEBUFFER_ATTACHMENT_BLUE_SIZE);      // 0x8214
    InsertEnumString(GL_FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE);     // 0x8215
    InsertEnumString(GL_FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE);     // 0x8216
    InsertEnumString(GL_FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE);       // 0x8217
    InsertEnumString(GL_FRAMEBUFFER_DEFAULT);       // 0x8218
    InsertEnumString(GL_FRAMEBUFFER_UNDEFINED);     // 0x8219
    InsertEnumString(GL_DEPTH_STENCIL_ATTACHMENT);      // 0x821A
    InsertEnumString(GL_MAJOR_VERSION);     // 0x821B
    InsertEnumString(GL_MINOR_VERSION);     // 0x821C
    InsertEnumString(GL_NUM_EXTENSIONS);        // 0x821D
    InsertEnumString(GL_RG);        // 0x8227
    InsertEnumString(GL_RG_INTEGER);        // 0x8228
    InsertEnumString(GL_R8);        // 0x8229
    InsertEnumString(GL_RG8);       // 0x822B
    InsertEnumString(GL_R16F);      // 0x822D
    InsertEnumString(GL_R32F);      // 0x822E
    InsertEnumString(GL_RG16F);     // 0x822F
    InsertEnumString(GL_RG32F);     // 0x8230
    InsertEnumString(GL_R8I);       // 0x8231
    InsertEnumString(GL_R8UI);      // 0x8232
    InsertEnumString(GL_R16I);      // 0x8233
    InsertEnumString(GL_R16UI);     // 0x8234
    InsertEnumString(GL_R32I);      // 0x8235
    InsertEnumString(GL_R32UI);     // 0x8236
    InsertEnumString(GL_RG8I);      // 0x8237
    InsertEnumString(GL_RG8UI);     // 0x8238
    InsertEnumString(GL_RG16I);     // 0x8239
    InsertEnumString(GL_RG16UI);        // 0x823A
    InsertEnumString(GL_RG32I);     // 0x823B
    InsertEnumString(GL_RG32UI);        // 0x823C
    InsertEnumString(GL_PROGRAM_BINARY_RETRIEVABLE_HINT);       // 0x8257
    InsertEnumString(GL_UNSIGNED_INT_2_10_10_10_REV);       // 0x8368
    InsertEnumString(GL_DEPTH_STENCIL);     // 0x84F9
    InsertEnumString(GL_UNSIGNED_INT_24_8);     // 0x84FA
    InsertEnumString(GL_MAX_TEXTURE_LOD_BIAS);      // 0x84FD
    InsertEnumString(GL_VERTEX_ARRAY_BINDING);      // 0x85B5
    InsertEnumString(GL_PROGRAM_BINARY_LENGTH);     // 0x8741
    InsertEnumString(GL_NUM_PROGRAM_BINARY_FORMATS);        // 0x87FE
    InsertEnumString(GL_PROGRAM_BINARY_FORMATS);        // 0x87FF
    InsertEnumString(GL_RGBA32F);       // 0x8814
    InsertEnumString(GL_RGB32F);        // 0x8815
    InsertEnumString(GL_RGBA16F);       // 0x881A
    InsertEnumString(GL_RGB16F);        // 0x881B
    InsertEnumString(GL_MAX_DRAW_BUFFERS);      // 0x8824
    InsertEnumString(GL_DRAW_BUFFER0);      // 0x8825
    InsertEnumString(GL_DRAW_BUFFER1);      // 0x8826
    InsertEnumString(GL_DRAW_BUFFER2);      // 0x8827
    InsertEnumString(GL_DRAW_BUFFER3);      // 0x8828
    InsertEnumString(GL_DRAW_BUFFER4);      // 0x8829
    InsertEnumString(GL_DRAW_BUFFER5);      // 0x882A
    InsertEnumString(GL_DRAW_BUFFER6);      // 0x882B
    InsertEnumString(GL_DRAW_BUFFER7);      // 0x882C
    InsertEnumString(GL_DRAW_BUFFER8);      // 0x882D
    InsertEnumString(GL_DRAW_BUFFER9);      // 0x882E
    InsertEnumString(GL_DRAW_BUFFER10);     // 0x882F
    InsertEnumString(GL_DRAW_BUFFER11);     // 0x8830
    InsertEnumString(GL_DRAW_BUFFER12);     // 0x8831
    InsertEnumString(GL_DRAW_BUFFER13);     // 0x8832
    InsertEnumString(GL_DRAW_BUFFER14);     // 0x8833
    InsertEnumString(GL_DRAW_BUFFER15);     // 0x8834
    InsertEnumString(GL_TEXTURE_COMPARE_MODE);      // 0x884C
    InsertEnumString(GL_TEXTURE_COMPARE_FUNC);      // 0x884D
    InsertEnumString(GL_COMPARE_REF_TO_TEXTURE);        // 0x884E
    InsertEnumString(GL_CURRENT_QUERY);     // 0x8865
    InsertEnumString(GL_QUERY_RESULT);      // 0x8866
    InsertEnumString(GL_QUERY_RESULT_AVAILABLE);        // 0x8867
    InsertEnumString(GL_BUFFER_MAPPED);     // 0x88BC
    InsertEnumString(GL_BUFFER_MAP_POINTER);        // 0x88BD
    InsertEnumString(GL_STREAM_READ);       // 0x88E1
    InsertEnumString(GL_STREAM_COPY);       // 0x88E2
    InsertEnumString(GL_STATIC_READ);       // 0x88E5
    InsertEnumString(GL_STATIC_COPY);       // 0x88E6
    InsertEnumString(GL_DYNAMIC_READ);      // 0x88E9
    InsertEnumString(GL_DYNAMIC_COPY);      // 0x88EA
    InsertEnumString(GL_PIXEL_PACK_BUFFER);     // 0x88EB
    InsertEnumString(GL_PIXEL_UNPACK_BUFFER);       // 0x88EC
    InsertEnumString(GL_PIXEL_PACK_BUFFER_BINDING);     // 0x88ED
    InsertEnumString(GL_PIXEL_UNPACK_BUFFER_BINDING);       // 0x88EF
    InsertEnumString(GL_DEPTH24_STENCIL8);      // 0x88F0
    InsertEnumString(GL_VERTEX_ATTRIB_ARRAY_INTEGER);       // 0x88FD
    InsertEnumString(GL_VERTEX_ATTRIB_ARRAY_DIVISOR);       // 0x88FE
    InsertEnumString(GL_MAX_ARRAY_TEXTURE_LAYERS);      // 0x88FF
    InsertEnumString(GL_MIN_PROGRAM_TEXEL_OFFSET);      // 0x8904
    InsertEnumString(GL_MAX_PROGRAM_TEXEL_OFFSET);      // 0x8905
    InsertEnumString(GL_SAMPLER_BINDING);       // 0x8919
    InsertEnumString(GL_UNIFORM_BUFFER);        // 0x8A11
    InsertEnumString(GL_UNIFORM_BUFFER_BINDING);        // 0x8A28
    InsertEnumString(GL_UNIFORM_BUFFER_START);      // 0x8A29
    InsertEnumString(GL_UNIFORM_BUFFER_SIZE);       // 0x8A2A
    InsertEnumString(GL_MAX_VERTEX_UNIFORM_BLOCKS);     // 0x8A2B
    InsertEnumString(GL_MAX_FRAGMENT_UNIFORM_BLOCKS);       // 0x8A2D
    InsertEnumString(GL_MAX_COMBINED_UNIFORM_BLOCKS);       // 0x8A2E
    InsertEnumString(GL_MAX_UNIFORM_BUFFER_BINDINGS);       // 0x8A2F
    InsertEnumString(GL_MAX_UNIFORM_BLOCK_SIZE);        // 0x8A30
    InsertEnumString(GL_MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS);        // 0x8A31
    InsertEnumString(GL_MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS);      // 0x8A33
    InsertEnumString(GL_UNIFORM_BUFFER_OFFSET_ALIGNMENT);       // 0x8A34
    InsertEnumString(GL_ACTIVE_UNIFORM_BLOCK_MAX_NAME_LENGTH);      // 0x8A35
    InsertEnumString(GL_ACTIVE_UNIFORM_BLOCKS);     // 0x8A36
    InsertEnumString(GL_UNIFORM_TYPE);      // 0x8A37
    InsertEnumString(GL_UNIFORM_SIZE);      // 0x8A38
    InsertEnumString(GL_UNIFORM_NAME_LENGTH);       // 0x8A39
    InsertEnumString(GL_UNIFORM_BLOCK_INDEX);       // 0x8A3A
    InsertEnumString(GL_UNIFORM_OFFSET);        // 0x8A3B
    InsertEnumString(GL_UNIFORM_ARRAY_STRIDE);      // 0x8A3C
    InsertEnumString(GL_UNIFORM_MATRIX_STRIDE);     // 0x8A3D
    InsertEnumString(GL_UNIFORM_IS_ROW_MAJOR);      // 0x8A3E
    InsertEnumString(GL_UNIFORM_BLOCK_BINDING);     // 0x8A3F
    InsertEnumString(GL_UNIFORM_BLOCK_DATA_SIZE);       // 0x8A40
    InsertEnumString(GL_UNIFORM_BLOCK_NAME_LENGTH);     // 0x8A41
    InsertEnumString(GL_UNIFORM_BLOCK_ACTIVE_UNIFORMS);     // 0x8A42
    InsertEnumString(GL_UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES);      // 0x8A43
    InsertEnumString(GL_UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER);     // 0x8A44
    InsertEnumString(GL_UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER);       // 0x8A46
    InsertEnumString(GL_MAX_FRAGMENT_UNIFORM_COMPONENTS);       // 0x8B49
    InsertEnumString(GL_MAX_VERTEX_UNIFORM_COMPONENTS);     // 0x8B4A
    InsertEnumString(GL_MAX_VARYING_COMPONENTS);        // 0x8B4B
    InsertEnumString(GL_SAMPLER_3D);        // 0x8B5F
    InsertEnumString(GL_SAMPLER_2D_SHADOW);     // 0x8B62
    InsertEnumString(GL_FLOAT_MAT2x3);      // 0x8B65
    InsertEnumString(GL_FLOAT_MAT2x4);      // 0x8B66
    InsertEnumString(GL_FLOAT_MAT3x2);      // 0x8B67
    InsertEnumString(GL_FLOAT_MAT3x4);      // 0x8B68
    InsertEnumString(GL_FLOAT_MAT4x2);      // 0x8B69
    InsertEnumString(GL_FLOAT_MAT4x3);      // 0x8B6A
    InsertEnumString(GL_FRAGMENT_SHADER_DERIVATIVE_HINT);       // 0x8B8B
    InsertEnumString(GL_UNSIGNED_NORMALIZED);       // 0x8C17
    InsertEnumString(GL_TEXTURE_BINDING_2D_ARRAY);      // 0x8C1D
    InsertEnumString(GL_ANY_SAMPLES_PASSED);        // 0x8C2F
    InsertEnumString(GL_R11F_G11F_B10F);        // 0x8C3A
    InsertEnumString(GL_UNSIGNED_INT_10F_11F_11F_REV);      // 0x8C3B
    InsertEnumString(GL_RGB9_E5);       // 0x8C3D
    InsertEnumString(GL_UNSIGNED_INT_5_9_9_9_REV);      // 0x8C3E
    InsertEnumString(GL_SRGB);      // 0x8C40
    InsertEnumString(GL_SRGB8);     // 0x8C41
    InsertEnumString(GL_SRGB8_ALPHA8);      // 0x8C43
    InsertEnumString(GL_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH);     // 0x8C76
    InsertEnumString(GL_TRANSFORM_FEEDBACK_BUFFER_MODE);        // 0x8C7F
    InsertEnumString(GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS);        // 0x8C80
    InsertEnumString(GL_TRANSFORM_FEEDBACK_VARYINGS);       // 0x8C83
    InsertEnumString(GL_TRANSFORM_FEEDBACK_BUFFER_START);       // 0x8C84
    InsertEnumString(GL_TRANSFORM_FEEDBACK_BUFFER_SIZE);        // 0x8C85
    InsertEnumString(GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN);     // 0x8C88
    InsertEnumString(GL_RASTERIZER_DISCARD);        // 0x8C89
    InsertEnumString(GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS);     // 0x8C8A
    InsertEnumString(GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS);       // 0x8C8B
    InsertEnumString(GL_INTERLEAVED_ATTRIBS);       // 0x8C8C
    InsertEnumString(GL_SEPARATE_ATTRIBS);      // 0x8C8D
    InsertEnumString(GL_TRANSFORM_FEEDBACK_BUFFER);     // 0x8C8E
    InsertEnumString(GL_TRANSFORM_FEEDBACK_BUFFER_BINDING);     // 0x8C8F
    InsertEnumString(GL_READ_FRAMEBUFFER);      // 0x8CA8
    InsertEnumString(GL_DRAW_FRAMEBUFFER);      // 0x8CA9
    InsertEnumString(GL_READ_FRAMEBUFFER_BINDING);      // 0x8CAA
    InsertEnumString(GL_RENDERBUFFER_SAMPLES);      // 0x8CAB
    InsertEnumString(GL_DEPTH_COMPONENT32F);        // 0x8CAC
    InsertEnumString(GL_DEPTH32F_STENCIL8);     // 0x8CAD
    InsertEnumString(GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER);      // 0x8CD4
    InsertEnumString(GL_MAX_COLOR_ATTACHMENTS);     // 0x8CDF
    InsertEnumString(GL_COLOR_ATTACHMENT1);     // 0x8CE1
    InsertEnumString(GL_COLOR_ATTACHMENT2);     // 0x8CE2
    InsertEnumString(GL_COLOR_ATTACHMENT3);     // 0x8CE3
    InsertEnumString(GL_COLOR_ATTACHMENT4);     // 0x8CE4
    InsertEnumString(GL_COLOR_ATTACHMENT5);     // 0x8CE5
    InsertEnumString(GL_COLOR_ATTACHMENT6);     // 0x8CE6
    InsertEnumString(GL_COLOR_ATTACHMENT7);     // 0x8CE7
    InsertEnumString(GL_COLOR_ATTACHMENT8);     // 0x8CE8
    InsertEnumString(GL_COLOR_ATTACHMENT9);     // 0x8CE9
    InsertEnumString(GL_COLOR_ATTACHMENT10);        // 0x8CEA
    InsertEnumString(GL_COLOR_ATTACHMENT11);        // 0x8CEB
    InsertEnumString(GL_COLOR_ATTACHMENT12);        // 0x8CEC
    InsertEnumString(GL_COLOR_ATTACHMENT13);        // 0x8CED
    InsertEnumString(GL_COLOR_ATTACHMENT14);        // 0x8CEE
    InsertEnumString(GL_COLOR_ATTACHMENT15);        // 0x8CEF
    InsertEnumString(GL_COLOR_ATTACHMENT16);        // 0x8CF0
    InsertEnumString(GL_COLOR_ATTACHMENT17);        // 0x8CF1
    InsertEnumString(GL_COLOR_ATTACHMENT18);        // 0x8CF2
    InsertEnumString(GL_COLOR_ATTACHMENT19);        // 0x8CF3
    InsertEnumString(GL_COLOR_ATTACHMENT20);        // 0x8CF4
    InsertEnumString(GL_COLOR_ATTACHMENT21);        // 0x8CF5
    InsertEnumString(GL_COLOR_ATTACHMENT22);        // 0x8CF6
    InsertEnumString(GL_COLOR_ATTACHMENT23);        // 0x8CF7
    InsertEnumString(GL_COLOR_ATTACHMENT24);        // 0x8CF8
    InsertEnumString(GL_COLOR_ATTACHMENT25);        // 0x8CF9
    InsertEnumString(GL_COLOR_ATTACHMENT26);        // 0x8CFA
    InsertEnumString(GL_COLOR_ATTACHMENT27);        // 0x8CFB
    InsertEnumString(GL_COLOR_ATTACHMENT28);        // 0x8CFC
    InsertEnumString(GL_COLOR_ATTACHMENT29);        // 0x8CFD
    InsertEnumString(GL_COLOR_ATTACHMENT30);        // 0x8CFE
    InsertEnumString(GL_COLOR_ATTACHMENT31);        // 0x8CFF
    InsertEnumString(GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE);        // 0x8D56
    InsertEnumString(GL_MAX_SAMPLES);       // 0x8D57
    InsertEnumString(GL_PRIMITIVE_RESTART_FIXED_INDEX);     // 0x8D69
    InsertEnumString(GL_ANY_SAMPLES_PASSED_CONSERVATIVE);       // 0x8D6A
    InsertEnumString(GL_MAX_ELEMENT_INDEX);     // 0x8D6B
    InsertEnumString(GL_RGBA32UI);      // 0x8D70
    InsertEnumString(GL_RGB32UI);       // 0x8D71
    InsertEnumString(GL_RGBA16UI);      // 0x8D76
    InsertEnumString(GL_RGB16UI);       // 0x8D77
    InsertEnumString(GL_RGBA8UI);       // 0x8D7C
    InsertEnumString(GL_RGB8UI);        // 0x8D7D
    InsertEnumString(GL_RGBA32I);       // 0x8D82
    InsertEnumString(GL_RGB32I);        // 0x8D83
    InsertEnumString(GL_RGBA16I);       // 0x8D88
    InsertEnumString(GL_RGB16I);        // 0x8D89
    InsertEnumString(GL_RGBA8I);        // 0x8D8E
    InsertEnumString(GL_RGB8I);     // 0x8D8F
    InsertEnumString(GL_RED_INTEGER);       // 0x8D94
    InsertEnumString(GL_RGB_INTEGER);       // 0x8D98
    InsertEnumString(GL_RGBA_INTEGER);      // 0x8D99
    InsertEnumString(GL_INT_2_10_10_10_REV);        // 0x8D9F
    InsertEnumString(GL_FLOAT_32_UNSIGNED_INT_24_8_REV);        // 0x8DAD
    InsertEnumString(GL_SAMPLER_2D_ARRAY);      // 0x8DC1
    InsertEnumString(GL_SAMPLER_2D_ARRAY_SHADOW);       // 0x8DC4
    InsertEnumString(GL_SAMPLER_CUBE_SHADOW);       // 0x8DC5
    InsertEnumString(GL_UNSIGNED_INT_VEC2);     // 0x8DC6
    InsertEnumString(GL_UNSIGNED_INT_VEC3);     // 0x8DC7
    InsertEnumString(GL_UNSIGNED_INT_VEC4);     // 0x8DC8
    InsertEnumString(GL_INT_SAMPLER_2D);        // 0x8DCA
    InsertEnumString(GL_INT_SAMPLER_3D);        // 0x8DCB
    InsertEnumString(GL_INT_SAMPLER_CUBE);      // 0x8DCC
    InsertEnumString(GL_INT_SAMPLER_2D_ARRAY);      // 0x8DCF
    InsertEnumString(GL_UNSIGNED_INT_SAMPLER_2D);       // 0x8DD2
    InsertEnumString(GL_UNSIGNED_INT_SAMPLER_3D);       // 0x8DD3
    InsertEnumString(GL_UNSIGNED_INT_SAMPLER_CUBE);     // 0x8DD4
    InsertEnumString(GL_UNSIGNED_INT_SAMPLER_2D_ARRAY);     // 0x8DD7
    InsertEnumString(GL_TRANSFORM_FEEDBACK_PAUSED);     // 0x8E23
    InsertEnumString(GL_TRANSFORM_FEEDBACK_ACTIVE);     // 0x8E24
    InsertEnumString(GL_TRANSFORM_FEEDBACK_BINDING);        // 0x8E25
    InsertEnumString(GL_TEXTURE_SWIZZLE_R);     // 0x8E42
    InsertEnumString(GL_TEXTURE_SWIZZLE_G);     // 0x8E43
    InsertEnumString(GL_TEXTURE_SWIZZLE_B);     // 0x8E44
    InsertEnumString(GL_TEXTURE_SWIZZLE_A);     // 0x8E45
    InsertEnumString(GL_COPY_READ_BUFFER);      // 0x8F36
    InsertEnumString(GL_COPY_WRITE_BUFFER);     // 0x8F37
    InsertEnumString(GL_RGB8_SNORM);        // 0x8F96
    InsertEnumString(GL_SIGNED_NORMALIZED);     // 0x8F9C
    InsertEnumString(GL_RGB10_A2UI);        // 0x906F
    InsertEnumString(GL_MAX_SERVER_WAIT_TIMEOUT);       // 0x9111
    InsertEnumString(GL_OBJECT_TYPE);       // 0x9112
    InsertEnumString(GL_SYNC_CONDITION);        // 0x9113
    InsertEnumString(GL_SYNC_STATUS);       // 0x9114
    InsertEnumString(GL_SYNC_FLAGS);        // 0x9115
    InsertEnumString(GL_SYNC_FENCE);        // 0x9116
    InsertEnumString(GL_SYNC_GPU_COMMANDS_COMPLETE);        // 0x9117
    InsertEnumString(GL_UNSIGNALED);        // 0x9118
    InsertEnumString(GL_SIGNALED);      // 0x9119
    InsertEnumString(GL_ALREADY_SIGNALED);      // 0x911A
    InsertEnumString(GL_TIMEOUT_EXPIRED);       // 0x911B
    InsertEnumString(GL_CONDITION_SATISFIED);       // 0x911C
    InsertEnumString(GL_WAIT_FAILED);       // 0x911D
    InsertEnumString(GL_BUFFER_ACCESS_FLAGS);       // 0x911F
    InsertEnumString(GL_BUFFER_MAP_LENGTH);     // 0x9120
    InsertEnumString(GL_BUFFER_MAP_OFFSET);     // 0x9121
    InsertEnumString(GL_MAX_VERTEX_OUTPUT_COMPONENTS);      // 0x9122
    InsertEnumString(GL_MAX_FRAGMENT_INPUT_COMPONENTS);     // 0x9125
    InsertEnumString(GL_TEXTURE_IMMUTABLE_FORMAT);      // 0x912F
    InsertEnumString(GL_COMPRESSED_R11_EAC);        // 0x9270
    InsertEnumString(GL_COMPRESSED_SIGNED_R11_EAC);     // 0x9271
    InsertEnumString(GL_COMPRESSED_RG11_EAC);       // 0x9272
    InsertEnumString(GL_COMPRESSED_SIGNED_RG11_EAC);        // 0x9273
    InsertEnumString(GL_COMPRESSED_RGB8_ETC2);      // 0x9274
    InsertEnumString(GL_COMPRESSED_SRGB8_ETC2);     // 0x9275
    InsertEnumString(GL_COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2);      // 0x9276
    InsertEnumString(GL_COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2);     // 0x9277
    InsertEnumString(GL_COMPRESSED_RGBA8_ETC2_EAC);     // 0x9278
    InsertEnumString(GL_COMPRESSED_SRGB8_ALPHA8_ETC2_EAC);      // 0x9279
    InsertEnumString(GL_NUM_SAMPLE_COUNTS);     // 0x9380

    /* GLES 3.1 enums */
    InsertEnumString(GL_TEXTURE_WIDTH);     // 0x1000
    InsertEnumString(GL_TEXTURE_HEIGHT);        // 0x1001
    InsertEnumString(GL_TEXTURE_INTERNAL_FORMAT);       // 0x1003
    InsertEnumString(GL_STENCIL_INDEX);     // 0x1901
    InsertEnumString(GL_TEXTURE_RED_SIZE);      // 0x805C
    InsertEnumString(GL_TEXTURE_GREEN_SIZE);        // 0x805D
    InsertEnumString(GL_TEXTURE_BLUE_SIZE);     // 0x805E
    InsertEnumString(GL_TEXTURE_ALPHA_SIZE);        // 0x805F
    InsertEnumString(GL_TEXTURE_DEPTH);     // 0x8071
    InsertEnumString(GL_PROGRAM_SEPARABLE);     // 0x8258
    InsertEnumString(GL_ACTIVE_PROGRAM);        // 0x8259
    InsertEnumString(GL_PROGRAM_PIPELINE_BINDING);      // 0x825A
    InsertEnumString(GL_MAX_COMPUTE_SHARED_MEMORY_SIZE);        // 0x8262
    InsertEnumString(GL_MAX_COMPUTE_UNIFORM_COMPONENTS);        // 0x8263
    InsertEnumString(GL_MAX_COMPUTE_ATOMIC_COUNTER_BUFFERS);        // 0x8264
    InsertEnumString(GL_MAX_COMPUTE_ATOMIC_COUNTERS);       // 0x8265
    InsertEnumString(GL_MAX_COMBINED_COMPUTE_UNIFORM_COMPONENTS);       // 0x8266
    InsertEnumString(GL_COMPUTE_WORK_GROUP_SIZE);       // 0x8267
    InsertEnumString(GL_MAX_UNIFORM_LOCATIONS);     // 0x826E
    InsertEnumString(GL_VERTEX_ATTRIB_BINDING);     // 0x82D4
    InsertEnumString(GL_VERTEX_ATTRIB_RELATIVE_OFFSET);     // 0x82D5
    InsertEnumString(GL_VERTEX_BINDING_DIVISOR);        // 0x82D6
    InsertEnumString(GL_VERTEX_BINDING_OFFSET);     // 0x82D7
    InsertEnumString(GL_VERTEX_BINDING_STRIDE);     // 0x82D8
    InsertEnumString(GL_MAX_VERTEX_ATTRIB_RELATIVE_OFFSET);     // 0x82D9
    InsertEnumString(GL_MAX_VERTEX_ATTRIB_BINDINGS);        // 0x82DA
    InsertEnumString(GL_MAX_VERTEX_ATTRIB_STRIDE);      // 0x82E5
    InsertEnumString(GL_TEXTURE_COMPRESSED);        // 0x86A1
    InsertEnumString(GL_TEXTURE_DEPTH_SIZE);        // 0x884A
    InsertEnumString(GL_READ_ONLY);     // 0x88B8
    InsertEnumString(GL_WRITE_ONLY);        // 0x88B9
    InsertEnumString(GL_READ_WRITE);        // 0x88BA
    InsertEnumString(GL_TEXTURE_STENCIL_SIZE);      // 0x88F1
    InsertEnumString(GL_TEXTURE_RED_TYPE);      // 0x8C10
    InsertEnumString(GL_TEXTURE_GREEN_TYPE);        // 0x8C11
    InsertEnumString(GL_TEXTURE_BLUE_TYPE);     // 0x8C12
    InsertEnumString(GL_TEXTURE_ALPHA_TYPE);        // 0x8C13
    InsertEnumString(GL_TEXTURE_DEPTH_TYPE);        // 0x8C16
    InsertEnumString(GL_TEXTURE_SHARED_SIZE);       // 0x8C3F
    InsertEnumString(GL_SAMPLE_POSITION);       // 0x8E50
    InsertEnumString(GL_SAMPLE_MASK);       // 0x8E51
    InsertEnumString(GL_SAMPLE_MASK_VALUE);     // 0x8E52
    InsertEnumString(GL_MAX_SAMPLE_MASK_WORDS);     // 0x8E59
    InsertEnumString(GL_MIN_PROGRAM_TEXTURE_GATHER_OFFSET);     // 0x8E5E
    InsertEnumString(GL_MAX_PROGRAM_TEXTURE_GATHER_OFFSET);     // 0x8E5F
    InsertEnumString(GL_MAX_IMAGE_UNITS);       // 0x8F38
    InsertEnumString(GL_MAX_COMBINED_SHADER_OUTPUT_RESOURCES);      // 0x8F39
    InsertEnumString(GL_IMAGE_BINDING_NAME);        // 0x8F3A
    InsertEnumString(GL_IMAGE_BINDING_LEVEL);       // 0x8F3B
    InsertEnumString(GL_IMAGE_BINDING_LAYERED);     // 0x8F3C
    InsertEnumString(GL_IMAGE_BINDING_LAYER);       // 0x8F3D
    InsertEnumString(GL_IMAGE_BINDING_ACCESS);      // 0x8F3E
    InsertEnumString(GL_DRAW_INDIRECT_BUFFER);      // 0x8F3F
    InsertEnumString(GL_DRAW_INDIRECT_BUFFER_BINDING);      // 0x8F43
    InsertEnumString(GL_VERTEX_BINDING_BUFFER);     // 0x8F4F
    InsertEnumString(GL_IMAGE_2D);      // 0x904D
    InsertEnumString(GL_IMAGE_3D);      // 0x904E
    InsertEnumString(GL_IMAGE_CUBE);        // 0x9050
    InsertEnumString(GL_IMAGE_2D_ARRAY);        // 0x9053
    InsertEnumString(GL_INT_IMAGE_2D);      // 0x9058
    InsertEnumString(GL_INT_IMAGE_3D);      // 0x9059
    InsertEnumString(GL_INT_IMAGE_CUBE);        // 0x905B
    InsertEnumString(GL_INT_IMAGE_2D_ARRAY);        // 0x905E
    InsertEnumString(GL_UNSIGNED_INT_IMAGE_2D);     // 0x9063
    InsertEnumString(GL_UNSIGNED_INT_IMAGE_3D);     // 0x9064
    InsertEnumString(GL_UNSIGNED_INT_IMAGE_CUBE);       // 0x9066
    InsertEnumString(GL_UNSIGNED_INT_IMAGE_2D_ARRAY);       // 0x9069
    InsertEnumString(GL_IMAGE_BINDING_FORMAT);      // 0x906E
    InsertEnumString(GL_IMAGE_FORMAT_COMPATIBILITY_TYPE);       // 0x90C7
    InsertEnumString(GL_IMAGE_FORMAT_COMPATIBILITY_BY_SIZE);        // 0x90C8
    InsertEnumString(GL_IMAGE_FORMAT_COMPATIBILITY_BY_CLASS);       // 0x90C9
    InsertEnumString(GL_MAX_VERTEX_IMAGE_UNIFORMS);     // 0x90CA
    InsertEnumString(GL_MAX_FRAGMENT_IMAGE_UNIFORMS);       // 0x90CE
    InsertEnumString(GL_MAX_COMBINED_IMAGE_UNIFORMS);       // 0x90CF
    InsertEnumString(GL_SHADER_STORAGE_BUFFER);     // 0x90D2
    InsertEnumString(GL_SHADER_STORAGE_BUFFER_BINDING);     // 0x90D3
    InsertEnumString(GL_SHADER_STORAGE_BUFFER_START);       // 0x90D4
    InsertEnumString(GL_SHADER_STORAGE_BUFFER_SIZE);        // 0x90D5
    InsertEnumString(GL_MAX_VERTEX_SHADER_STORAGE_BLOCKS);      // 0x90D6
    InsertEnumString(GL_MAX_FRAGMENT_SHADER_STORAGE_BLOCKS);        // 0x90DA
    InsertEnumString(GL_MAX_COMPUTE_SHADER_STORAGE_BLOCKS);     // 0x90DB
    InsertEnumString(GL_MAX_COMBINED_SHADER_STORAGE_BLOCKS);        // 0x90DC
    InsertEnumString(GL_MAX_SHADER_STORAGE_BUFFER_BINDINGS);        // 0x90DD
    InsertEnumString(GL_MAX_SHADER_STORAGE_BLOCK_SIZE);     // 0x90DE
    InsertEnumString(GL_SHADER_STORAGE_BUFFER_OFFSET_ALIGNMENT);        // 0x90DF
    InsertEnumString(GL_DEPTH_STENCIL_TEXTURE_MODE);        // 0x90EA
    InsertEnumString(GL_MAX_COMPUTE_WORK_GROUP_INVOCATIONS);        // 0x90EB
    InsertEnumString(GL_DISPATCH_INDIRECT_BUFFER);      // 0x90EE
    InsertEnumString(GL_DISPATCH_INDIRECT_BUFFER_BINDING);      // 0x90EF
    InsertEnumString(GL_TEXTURE_BINDING_2D_MULTISAMPLE);        // 0x9104
    InsertEnumString(GL_TEXTURE_SAMPLES);       // 0x9106
    InsertEnumString(GL_TEXTURE_FIXED_SAMPLE_LOCATIONS);        // 0x9107
    InsertEnumString(GL_SAMPLER_2D_MULTISAMPLE);        // 0x9108
    InsertEnumString(GL_INT_SAMPLER_2D_MULTISAMPLE);        // 0x9109
    InsertEnumString(GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE);       // 0x910A
    InsertEnumString(GL_MAX_COLOR_TEXTURE_SAMPLES);     // 0x910E
    InsertEnumString(GL_MAX_DEPTH_TEXTURE_SAMPLES);     // 0x910F
    InsertEnumString(GL_MAX_INTEGER_SAMPLES);       // 0x9110
    InsertEnumString(GL_COMPUTE_SHADER);        // 0x91B9
    InsertEnumString(GL_MAX_COMPUTE_UNIFORM_BLOCKS);        // 0x91BB
    InsertEnumString(GL_MAX_COMPUTE_TEXTURE_IMAGE_UNITS);       // 0x91BC
    InsertEnumString(GL_MAX_COMPUTE_IMAGE_UNIFORMS);        // 0x91BD
    InsertEnumString(GL_MAX_COMPUTE_WORK_GROUP_COUNT);      // 0x91BE
    InsertEnumString(GL_MAX_COMPUTE_WORK_GROUP_SIZE);       // 0x91BF
    InsertEnumString(GL_ATOMIC_COUNTER_BUFFER);     // 0x92C0
    InsertEnumString(GL_ATOMIC_COUNTER_BUFFER_BINDING);     // 0x92C1
    InsertEnumString(GL_ATOMIC_COUNTER_BUFFER_START);       // 0x92C2
    InsertEnumString(GL_ATOMIC_COUNTER_BUFFER_SIZE);        // 0x92C3
    InsertEnumString(GL_MAX_VERTEX_ATOMIC_COUNTER_BUFFERS);     // 0x92CC
    InsertEnumString(GL_MAX_FRAGMENT_ATOMIC_COUNTER_BUFFERS);       // 0x92D0
    InsertEnumString(GL_MAX_COMBINED_ATOMIC_COUNTER_BUFFERS);       // 0x92D1
    InsertEnumString(GL_MAX_VERTEX_ATOMIC_COUNTERS);        // 0x92D2
    InsertEnumString(GL_MAX_FRAGMENT_ATOMIC_COUNTERS);      // 0x92D6
    InsertEnumString(GL_MAX_COMBINED_ATOMIC_COUNTERS);      // 0x92D7
    InsertEnumString(GL_MAX_ATOMIC_COUNTER_BUFFER_SIZE);        // 0x92D8
    InsertEnumString(GL_ACTIVE_ATOMIC_COUNTER_BUFFERS);     // 0x92D9
    InsertEnumString(GL_UNSIGNED_INT_ATOMIC_COUNTER);       // 0x92DB
    InsertEnumString(GL_MAX_ATOMIC_COUNTER_BUFFER_BINDINGS);        // 0x92DC
    InsertEnumString(GL_UNIFORM);       // 0x92E1
    InsertEnumString(GL_UNIFORM_BLOCK);     // 0x92E2
    InsertEnumString(GL_PROGRAM_INPUT);     // 0x92E3
    InsertEnumString(GL_PROGRAM_OUTPUT);        // 0x92E4
    InsertEnumString(GL_BUFFER_VARIABLE);       // 0x92E5
    InsertEnumString(GL_SHADER_STORAGE_BLOCK);      // 0x92E6
    InsertEnumString(GL_TRANSFORM_FEEDBACK_VARYING);        // 0x92F4
    InsertEnumString(GL_ACTIVE_RESOURCES);      // 0x92F5
    InsertEnumString(GL_MAX_NAME_LENGTH);       // 0x92F6
    InsertEnumString(GL_MAX_NUM_ACTIVE_VARIABLES);      // 0x92F7
    InsertEnumString(GL_NAME_LENGTH);       // 0x92F9
    InsertEnumString(GL_TYPE);      // 0x92FA
    InsertEnumString(GL_ARRAY_SIZE);        // 0x92FB
    InsertEnumString(GL_OFFSET);        // 0x92FC
    InsertEnumString(GL_BLOCK_INDEX);       // 0x92FD
    InsertEnumString(GL_ARRAY_STRIDE);      // 0x92FE
    InsertEnumString(GL_MATRIX_STRIDE);     // 0x92FF
    InsertEnumString(GL_IS_ROW_MAJOR);      // 0x9300
    InsertEnumString(GL_ATOMIC_COUNTER_BUFFER_INDEX);       // 0x9301
    InsertEnumString(GL_BUFFER_BINDING);        // 0x9302
    InsertEnumString(GL_BUFFER_DATA_SIZE);      // 0x9303
    InsertEnumString(GL_NUM_ACTIVE_VARIABLES);      // 0x9304
    InsertEnumString(GL_ACTIVE_VARIABLES);      // 0x9305
    InsertEnumString(GL_REFERENCED_BY_VERTEX_SHADER);       // 0x9306
    InsertEnumString(GL_REFERENCED_BY_FRAGMENT_SHADER);     // 0x930A
    InsertEnumString(GL_REFERENCED_BY_COMPUTE_SHADER);      // 0x930B
    InsertEnumString(GL_TOP_LEVEL_ARRAY_SIZE);      // 0x930C
    InsertEnumString(GL_TOP_LEVEL_ARRAY_STRIDE);        // 0x930D
    InsertEnumString(GL_LOCATION);      // 0x930E
    InsertEnumString(GL_FRAMEBUFFER_DEFAULT_WIDTH);     // 0x9310
    InsertEnumString(GL_FRAMEBUFFER_DEFAULT_HEIGHT);        // 0x9311
    InsertEnumString(GL_FRAMEBUFFER_DEFAULT_SAMPLES);       // 0x9313
    InsertEnumString(GL_FRAMEBUFFER_DEFAULT_FIXED_SAMPLE_LOCATIONS);        // 0x9314
    InsertEnumString(GL_MAX_FRAMEBUFFER_WIDTH);     // 0x9315
    InsertEnumString(GL_MAX_FRAMEBUFFER_HEIGHT);        // 0x9316
    InsertEnumString(GL_MAX_FRAMEBUFFER_SAMPLES);       // 0x9318

    /* GLES 3.2 enums */
    InsertEnumString(GL_CONTEXT_LOST);      // 0x0507
    InsertEnumString(GL_TEXTURE_BORDER_COLOR);      // 0x1004
    InsertEnumString(GL_CLAMP_TO_BORDER);       // 0x812D
    InsertEnumString(GL_CONTEXT_FLAGS);     // 0x821E
    InsertEnumString(GL_DEBUG_OUTPUT_SYNCHRONOUS);      // 0x8242
    InsertEnumString(GL_DEBUG_NEXT_LOGGED_MESSAGE_LENGTH);      // 0x8243
    InsertEnumString(GL_DEBUG_CALLBACK_FUNCTION);       // 0x8244
    InsertEnumString(GL_DEBUG_CALLBACK_USER_PARAM);     // 0x8245
    InsertEnumString(GL_DEBUG_SOURCE_API);      // 0x8246
    InsertEnumString(GL_DEBUG_SOURCE_WINDOW_SYSTEM);        // 0x8247
    InsertEnumString(GL_DEBUG_SOURCE_SHADER_COMPILER);      // 0x8248
    InsertEnumString(GL_DEBUG_SOURCE_THIRD_PARTY);      // 0x8249
    InsertEnumString(GL_DEBUG_SOURCE_APPLICATION);      // 0x824A
    InsertEnumString(GL_DEBUG_SOURCE_OTHER);        // 0x824B
    InsertEnumString(GL_DEBUG_TYPE_ERROR);      // 0x824C
    InsertEnumString(GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR);        // 0x824D
    InsertEnumString(GL_DEBUG_TYPE_UNDEFINED_BEHAVIOR);     // 0x824E
    InsertEnumString(GL_DEBUG_TYPE_PORTABILITY);        // 0x824F
    InsertEnumString(GL_DEBUG_TYPE_PERFORMANCE);        // 0x8250
    InsertEnumString(GL_DEBUG_TYPE_OTHER);      // 0x8251
    InsertEnumString(GL_LOSE_CONTEXT_ON_RESET);     // 0x8252
    InsertEnumString(GL_GUILTY_CONTEXT_RESET);      // 0x8253
    InsertEnumString(GL_INNOCENT_CONTEXT_RESET);        // 0x8254
    InsertEnumString(GL_UNKNOWN_CONTEXT_RESET);     // 0x8255
    InsertEnumString(GL_RESET_NOTIFICATION_STRATEGY);       // 0x8256
    InsertEnumString(GL_LAYER_PROVOKING_VERTEX);        // 0x825E
    InsertEnumString(GL_UNDEFINED_VERTEX);      // 0x8260
    InsertEnumString(GL_NO_RESET_NOTIFICATION);     // 0x8261
    InsertEnumString(GL_DEBUG_TYPE_MARKER);     // 0x8268
    InsertEnumString(GL_DEBUG_TYPE_PUSH_GROUP);     // 0x8269
    InsertEnumString(GL_DEBUG_TYPE_POP_GROUP);      // 0x826A
    InsertEnumString(GL_DEBUG_SEVERITY_NOTIFICATION);       // 0x826B
    InsertEnumString(GL_MAX_DEBUG_GROUP_STACK_DEPTH);       // 0x826C
    InsertEnumString(GL_DEBUG_GROUP_STACK_DEPTH);       // 0x826D
    InsertEnumString(GL_BUFFER);        // 0x82E0
    InsertEnumString(GL_SHADER);        // 0x82E1
    InsertEnumString(GL_PROGRAM);       // 0x82E2
    InsertEnumString(GL_QUERY);     // 0x82E3
    InsertEnumString(GL_PROGRAM_PIPELINE);      // 0x82E4
    InsertEnumString(GL_MAX_LABEL_LENGTH);      // 0x82E8
    InsertEnumString(GL_MAX_TESS_CONTROL_INPUT_COMPONENTS);     // 0x886C
    InsertEnumString(GL_MAX_TESS_EVALUATION_INPUT_COMPONENTS);      // 0x886D
    InsertEnumString(GL_GEOMETRY_SHADER_INVOCATIONS);       // 0x887F
    InsertEnumString(GL_GEOMETRY_VERTICES_OUT);     // 0x8916
    InsertEnumString(GL_GEOMETRY_INPUT_TYPE);       // 0x8917
    InsertEnumString(GL_GEOMETRY_OUTPUT_TYPE);      // 0x8918
    InsertEnumString(GL_MAX_GEOMETRY_UNIFORM_BLOCKS);       // 0x8A2C
    InsertEnumString(GL_MAX_COMBINED_GEOMETRY_UNIFORM_COMPONENTS);      // 0x8A32
    InsertEnumString(GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS);      // 0x8C29
    InsertEnumString(GL_TEXTURE_BUFFER);        // 0x8C2A
    InsertEnumString(GL_MAX_TEXTURE_BUFFER_SIZE);       // 0x8C2B
    InsertEnumString(GL_TEXTURE_BINDING_BUFFER);        // 0x8C2C
    InsertEnumString(GL_TEXTURE_BUFFER_DATA_STORE_BINDING);     // 0x8C2D
    InsertEnumString(GL_SAMPLE_SHADING);        // 0x8C36
    InsertEnumString(GL_MIN_SAMPLE_SHADING_VALUE);      // 0x8C37
    InsertEnumString(GL_PRIMITIVES_GENERATED);      // 0x8C87
    InsertEnumString(GL_FRAMEBUFFER_ATTACHMENT_LAYERED);        // 0x8DA7
    InsertEnumString(GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS);      // 0x8DA8
    InsertEnumString(GL_SAMPLER_BUFFER);        // 0x8DC2
    InsertEnumString(GL_INT_SAMPLER_BUFFER);        // 0x8DD0
    InsertEnumString(GL_UNSIGNED_INT_SAMPLER_BUFFER);       // 0x8DD8
    InsertEnumString(GL_GEOMETRY_SHADER);       // 0x8DD9
    InsertEnumString(GL_MAX_GEOMETRY_UNIFORM_COMPONENTS);       // 0x8DDF
    InsertEnumString(GL_MAX_GEOMETRY_OUTPUT_VERTICES);      // 0x8DE0
    InsertEnumString(GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS);      // 0x8DE1
    InsertEnumString(GL_MAX_COMBINED_TESS_CONTROL_UNIFORM_COMPONENTS);      // 0x8E1E
    InsertEnumString(GL_MAX_COMBINED_TESS_EVALUATION_UNIFORM_COMPONENTS);       // 0x8E1F
    InsertEnumString(GL_FIRST_VERTEX_CONVENTION);       // 0x8E4D
    InsertEnumString(GL_LAST_VERTEX_CONVENTION);        // 0x8E4E
    InsertEnumString(GL_MAX_GEOMETRY_SHADER_INVOCATIONS);       // 0x8E5A
    InsertEnumString(GL_MIN_FRAGMENT_INTERPOLATION_OFFSET);     // 0x8E5B
    InsertEnumString(GL_MAX_FRAGMENT_INTERPOLATION_OFFSET);     // 0x8E5C
    InsertEnumString(GL_FRAGMENT_INTERPOLATION_OFFSET_BITS);        // 0x8E5D
    InsertEnumString(GL_PATCH_VERTICES);        // 0x8E72
    InsertEnumString(GL_TESS_CONTROL_OUTPUT_VERTICES);      // 0x8E75
    InsertEnumString(GL_TESS_GEN_MODE);     // 0x8E76
    InsertEnumString(GL_TESS_GEN_SPACING);      // 0x8E77
    InsertEnumString(GL_TESS_GEN_VERTEX_ORDER);     // 0x8E78
    InsertEnumString(GL_TESS_GEN_POINT_MODE);       // 0x8E79
    InsertEnumString(GL_FRACTIONAL_ODD);        // 0x8E7B
    InsertEnumString(GL_FRACTIONAL_EVEN);       // 0x8E7C
    InsertEnumString(GL_MAX_PATCH_VERTICES);        // 0x8E7D
    InsertEnumString(GL_MAX_TESS_GEN_LEVEL);        // 0x8E7E
    InsertEnumString(GL_MAX_TESS_CONTROL_UNIFORM_COMPONENTS);       // 0x8E7F
    InsertEnumString(GL_MAX_TESS_EVALUATION_UNIFORM_COMPONENTS);        // 0x8E80
    InsertEnumString(GL_MAX_TESS_CONTROL_TEXTURE_IMAGE_UNITS);      // 0x8E81
    InsertEnumString(GL_MAX_TESS_EVALUATION_TEXTURE_IMAGE_UNITS);       // 0x8E82
    InsertEnumString(GL_MAX_TESS_CONTROL_OUTPUT_COMPONENTS);        // 0x8E83
    InsertEnumString(GL_MAX_TESS_PATCH_COMPONENTS);     // 0x8E84
    InsertEnumString(GL_MAX_TESS_CONTROL_TOTAL_OUTPUT_COMPONENTS);      // 0x8E85
    InsertEnumString(GL_MAX_TESS_EVALUATION_OUTPUT_COMPONENTS);     // 0x8E86
    InsertEnumString(GL_TESS_EVALUATION_SHADER);        // 0x8E87
    InsertEnumString(GL_TESS_CONTROL_SHADER);       // 0x8E88
    InsertEnumString(GL_MAX_TESS_CONTROL_UNIFORM_BLOCKS);       // 0x8E89
    InsertEnumString(GL_MAX_TESS_EVALUATION_UNIFORM_BLOCKS);        // 0x8E8A
    InsertEnumString(GL_TEXTURE_CUBE_MAP_ARRAY);        // 0x9009
    InsertEnumString(GL_TEXTURE_BINDING_CUBE_MAP_ARRAY);        // 0x900A
    InsertEnumString(GL_SAMPLER_CUBE_MAP_ARRAY);        // 0x900C
    InsertEnumString(GL_SAMPLER_CUBE_MAP_ARRAY_SHADOW);     // 0x900D
    InsertEnumString(GL_INT_SAMPLER_CUBE_MAP_ARRAY);        // 0x900E
    InsertEnumString(GL_UNSIGNED_INT_SAMPLER_CUBE_MAP_ARRAY);       // 0x900F
    InsertEnumString(GL_IMAGE_BUFFER);      // 0x9051
    InsertEnumString(GL_IMAGE_CUBE_MAP_ARRAY);      // 0x9054
    InsertEnumString(GL_INT_IMAGE_BUFFER);      // 0x905C
    InsertEnumString(GL_INT_IMAGE_CUBE_MAP_ARRAY);      // 0x905F
    InsertEnumString(GL_UNSIGNED_INT_IMAGE_BUFFER);     // 0x9067
    InsertEnumString(GL_UNSIGNED_INT_IMAGE_CUBE_MAP_ARRAY);     // 0x906A
    InsertEnumString(GL_MAX_TESS_CONTROL_IMAGE_UNIFORMS);       // 0x90CB
    InsertEnumString(GL_MAX_TESS_EVALUATION_IMAGE_UNIFORMS);        // 0x90CC
    InsertEnumString(GL_MAX_GEOMETRY_IMAGE_UNIFORMS);       // 0x90CD
    InsertEnumString(GL_MAX_GEOMETRY_SHADER_STORAGE_BLOCKS);        // 0x90D7
    InsertEnumString(GL_MAX_TESS_CONTROL_SHADER_STORAGE_BLOCKS);        // 0x90D8
    InsertEnumString(GL_MAX_TESS_EVALUATION_SHADER_STORAGE_BLOCKS);     // 0x90D9
    InsertEnumString(GL_TEXTURE_BINDING_2D_MULTISAMPLE_ARRAY);      // 0x9105
    InsertEnumString(GL_SAMPLER_2D_MULTISAMPLE_ARRAY);      // 0x910B
    InsertEnumString(GL_INT_SAMPLER_2D_MULTISAMPLE_ARRAY);      // 0x910C
    InsertEnumString(GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE_ARRAY);     // 0x910D
    InsertEnumString(GL_MAX_GEOMETRY_INPUT_COMPONENTS);     // 0x9123
    InsertEnumString(GL_MAX_GEOMETRY_OUTPUT_COMPONENTS);        // 0x9124
    InsertEnumString(GL_MAX_DEBUG_MESSAGE_LENGTH);      // 0x9143
    InsertEnumString(GL_MAX_DEBUG_LOGGED_MESSAGES);     // 0x9144
    InsertEnumString(GL_DEBUG_LOGGED_MESSAGES);     // 0x9145
    InsertEnumString(GL_DEBUG_SEVERITY_HIGH);       // 0x9146
    InsertEnumString(GL_DEBUG_SEVERITY_MEDIUM);     // 0x9147
    InsertEnumString(GL_DEBUG_SEVERITY_LOW);        // 0x9148
    InsertEnumString(GL_TEXTURE_BUFFER_OFFSET);     // 0x919D
    InsertEnumString(GL_TEXTURE_BUFFER_SIZE);       // 0x919E
    InsertEnumString(GL_TEXTURE_BUFFER_OFFSET_ALIGNMENT);       // 0x919F
    InsertEnumString(GL_MULTIPLY);      // 0x9294
    InsertEnumString(GL_SCREEN);        // 0x9295
    InsertEnumString(GL_OVERLAY);       // 0x9296
    InsertEnumString(GL_DARKEN);        // 0x9297
    InsertEnumString(GL_LIGHTEN);       // 0x9298
    InsertEnumString(GL_COLORDODGE);        // 0x9299
    InsertEnumString(GL_COLORBURN);     // 0x929A
    InsertEnumString(GL_HARDLIGHT);     // 0x929B
    InsertEnumString(GL_SOFTLIGHT);     // 0x929C
    InsertEnumString(GL_DIFFERENCE);        // 0x929E
    InsertEnumString(GL_EXCLUSION);     // 0x92A0
    InsertEnumString(GL_HSL_HUE);       // 0x92AD
    InsertEnumString(GL_HSL_SATURATION);        // 0x92AE
    InsertEnumString(GL_HSL_COLOR);     // 0x92AF
    InsertEnumString(GL_HSL_LUMINOSITY);        // 0x92B0
    InsertEnumString(GL_PRIMITIVE_BOUNDING_BOX);        // 0x92BE
    InsertEnumString(GL_MAX_TESS_CONTROL_ATOMIC_COUNTER_BUFFERS);       // 0x92CD
    InsertEnumString(GL_MAX_TESS_EVALUATION_ATOMIC_COUNTER_BUFFERS);        // 0x92CE
    InsertEnumString(GL_MAX_GEOMETRY_ATOMIC_COUNTER_BUFFERS);       // 0x92CF
    InsertEnumString(GL_MAX_TESS_CONTROL_ATOMIC_COUNTERS);      // 0x92D3
    InsertEnumString(GL_MAX_TESS_EVALUATION_ATOMIC_COUNTERS);       // 0x92D4
    InsertEnumString(GL_MAX_GEOMETRY_ATOMIC_COUNTERS);      // 0x92D5
    InsertEnumString(GL_DEBUG_OUTPUT);      // 0x92E0
    InsertEnumString(GL_IS_PER_PATCH);      // 0x92E7
    InsertEnumString(GL_REFERENCED_BY_TESS_CONTROL_SHADER);     // 0x9307
    InsertEnumString(GL_REFERENCED_BY_TESS_EVALUATION_SHADER);      // 0x9308
    InsertEnumString(GL_REFERENCED_BY_GEOMETRY_SHADER);     // 0x9309
    InsertEnumString(GL_FRAMEBUFFER_DEFAULT_LAYERS);        // 0x9312
    InsertEnumString(GL_MAX_FRAMEBUFFER_LAYERS);        // 0x9317
    InsertEnumString(GL_MULTISAMPLE_LINE_WIDTH_RANGE);      // 0x9381
    InsertEnumString(GL_MULTISAMPLE_LINE_WIDTH_GRANULARITY);        // 0x9382
    InsertEnumString(GL_COMPRESSED_RGBA_ASTC_4x4);      // 0x93B0
    InsertEnumString(GL_COMPRESSED_RGBA_ASTC_5x4);      // 0x93B1
    InsertEnumString(GL_COMPRESSED_RGBA_ASTC_5x5);      // 0x93B2
    InsertEnumString(GL_COMPRESSED_RGBA_ASTC_6x5);      // 0x93B3
    InsertEnumString(GL_COMPRESSED_RGBA_ASTC_6x6);      // 0x93B4
    InsertEnumString(GL_COMPRESSED_RGBA_ASTC_8x5);      // 0x93B5
    InsertEnumString(GL_COMPRESSED_RGBA_ASTC_8x6);      // 0x93B6
    InsertEnumString(GL_COMPRESSED_RGBA_ASTC_8x8);      // 0x93B7
    InsertEnumString(GL_COMPRESSED_RGBA_ASTC_10x5);     // 0x93B8
    InsertEnumString(GL_COMPRESSED_RGBA_ASTC_10x6);     // 0x93B9
    InsertEnumString(GL_COMPRESSED_RGBA_ASTC_10x8);     // 0x93BA
    InsertEnumString(GL_COMPRESSED_RGBA_ASTC_10x10);        // 0x93BB
    InsertEnumString(GL_COMPRESSED_RGBA_ASTC_12x10);        // 0x93BC
    InsertEnumString(GL_COMPRESSED_RGBA_ASTC_12x12);        // 0x93BD
    InsertEnumString(GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4);      // 0x93D0
    InsertEnumString(GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x4);      // 0x93D1
    InsertEnumString(GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5);      // 0x93D2
    InsertEnumString(GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x5);      // 0x93D3
    InsertEnumString(GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6);      // 0x93D4
    InsertEnumString(GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x5);      // 0x93D5
    InsertEnumString(GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x6);      // 0x93D6
    InsertEnumString(GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x8);      // 0x93D7
    InsertEnumString(GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x5);     // 0x93D8
    InsertEnumString(GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x6);     // 0x93D9
    InsertEnumString(GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x8);     // 0x93DA
    InsertEnumString(GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x10);        // 0x93DB
    InsertEnumString(GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x10);        // 0x93DC
    InsertEnumString(GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x12);        // 0x93DD

    /* GL_OES_packed_depth_stencil */
    // For glTex[Sub]Image2D
    InsertEnumString(GL_DEPTH_STENCIL_OES);
    InsertEnumString(GL_UNSIGNED_INT_24_8_OES);
    // For renderbuffer storage
    InsertEnumString(GL_DEPTH24_STENCIL8_OES);

    /* GL_EXT_multisampled_render_to_texture */
    InsertEnumString(GL_RENDERBUFFER_SAMPLES_EXT);
    InsertEnumString(GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_EXT);
    InsertEnumString(GL_MAX_SAMPLES_EXT);

    /* GL_EXT_texture_format_BGRA8888 */
    InsertEnumString(GL_BGRA_EXT);

    InsertDrawEnumString(GL_LINES_ADJACENCY);
    InsertDrawEnumString(GL_LINE_STRIP_ADJACENCY);
    InsertDrawEnumString(GL_TRIANGLES_ADJACENCY);
    InsertDrawEnumString(GL_TRIANGLE_STRIP_ADJACENCY);
    InsertDrawEnumString(GL_ISOLINES);
    //InsertDrawEnumString(GL_QUADS);
    InsertDrawEnumString(GL_PATCHES);

    InsertDrawEnumString(GL_POINTS);
    InsertDrawEnumString(GL_LINES);
    InsertDrawEnumString(GL_LINE_LOOP);
    InsertDrawEnumString(GL_LINE_STRIP);
    InsertDrawEnumString(GL_TRIANGLES);
    InsertDrawEnumString(GL_TRIANGLE_STRIP);
    InsertDrawEnumString(GL_TRIANGLE_FAN);
    InsertDrawEnumString(GL_QUADS);     //0x0007
    InsertDrawEnumString(GL_BYTE);
    InsertDrawEnumString(GL_UNSIGNED_BYTE);
    InsertDrawEnumString(GL_SHORT);
    InsertDrawEnumString(GL_UNSIGNED_SHORT);
    InsertDrawEnumString(GL_INT);
    InsertDrawEnumString(GL_UNSIGNED_INT);

    // KHR_debug
    InsertEnumString(GL_DEBUG_OUTPUT_KHR);
    InsertEnumString(GL_DEBUG_OUTPUT_SYNCHRONOUS_KHR);
    InsertEnumString(GL_MAX_DEBUG_MESSAGE_LENGTH_KHR);
    InsertEnumString(GL_MAX_DEBUG_LOGGED_MESSAGES_KHR);
    InsertEnumString(GL_DEBUG_LOGGED_MESSAGES_KHR);
    InsertEnumString(GL_DEBUG_NEXT_LOGGED_MESSAGE_LENGTH_KHR);
    InsertEnumString(GL_MAX_DEBUG_GROUP_STACK_DEPTH_KHR);
    InsertEnumString(GL_DEBUG_GROUP_STACK_DEPTH_KHR);
    InsertEnumString(GL_MAX_LABEL_LENGTH_KHR);
    InsertEnumString(GL_DEBUG_CALLBACK_FUNCTION_KHR);
    InsertEnumString(GL_DEBUG_CALLBACK_USER_PARAM_KHR);
    InsertEnumString(GL_DEBUG_SOURCE_API_KHR);
    InsertEnumString(GL_DEBUG_SOURCE_WINDOW_SYSTEM_KHR);
    InsertEnumString(GL_DEBUG_SOURCE_SHADER_COMPILER_KHR);
    InsertEnumString(GL_DEBUG_SOURCE_THIRD_PARTY_KHR);
    InsertEnumString(GL_DEBUG_SOURCE_APPLICATION_KHR);
    InsertEnumString(GL_DEBUG_SOURCE_OTHER_KHR);
    InsertEnumString(GL_DEBUG_TYPE_ERROR_KHR);
    InsertEnumString(GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR_KHR);
    InsertEnumString(GL_DEBUG_TYPE_UNDEFINED_BEHAVIOR_KHR);
    InsertEnumString(GL_DEBUG_TYPE_PORTABILITY_KHR);
    InsertEnumString(GL_DEBUG_TYPE_PERFORMANCE_KHR);
    InsertEnumString(GL_DEBUG_TYPE_OTHER_KHR);
    InsertEnumString(GL_DEBUG_TYPE_MARKER_KHR);
    InsertEnumString(GL_DEBUG_TYPE_PUSH_GROUP_KHR);
    InsertEnumString(GL_DEBUG_TYPE_POP_GROUP_KHR);
    InsertEnumString(GL_DEBUG_SEVERITY_HIGH_KHR);
    InsertEnumString(GL_DEBUG_SEVERITY_MEDIUM_KHR);
    InsertEnumString(GL_DEBUG_SEVERITY_LOW_KHR);
    InsertEnumString(GL_DEBUG_SEVERITY_NOTIFICATION_KHR);
    InsertEnumString(GL_STACK_UNDERFLOW);
    InsertEnumString(GL_STACK_OVERFLOW);
    InsertEnumString(GL_BUFFER_KHR);
    InsertEnumString(GL_SHADER_KHR);
    InsertEnumString(GL_PROGRAM_KHR);
    InsertEnumString(GL_QUERY_KHR);
    InsertEnumString(GL_PROGRAM_PIPELINE);
    InsertEnumString(GL_SAMPLER);

    sInitedEnumMap = true;
}

}

const char * EnumString(unsigned int enumToFind, const std::string &funName)
{
    if ( !sInitedEnumMap ) InitEnumMap();

    if (funName.compare(0, 3, "egl") == 0)
    {
        const auto& citer = sEglEnumMap.find(enumToFind);
        if (citer != sEglEnumMap.end())
        {
            return citer->second;
        }
    }

    if (funName.find("glBlend") != std::string::npos) // needs special handling
    {
        if (enumToFind == GL_ZERO)
        {
            return "GL_ZERO";
        }
        else if (enumToFind == GL_ONE)
        {
            return "GL_ONE";
        }
    }

    if (funName.find("glTexParameter") != std::string::npos) // texturing, needs special handling
    {
        if (enumToFind == GL_NONE)
        {
            return "GL_NONE";
        }
    }

    if (funName.find("glDraw") != std::string::npos)
    {
        const auto& citer = sDrawEnumMap.find(enumToFind);
        if (citer != sDrawEnumMap.end())
        {
            return citer->second;
        }
    }

    if (funName == "glGetError")
    {
        return "GL_NO_ERROR";
    }

    const auto& citer = sEnumMap.find(enumToFind);
    if (citer != sEnumMap.end())
    {
        return citer->second;
    }

    return NULL;
}

const std::string Cube2D::asString() const
{
    char buffer[128];
    sprintf(buffer, "x:%d y:%d width:%d height:%d", x, y, width, height);
    return buffer;
}
